Публикация базы данных 1С:Предприятие на веб-сервере — стандартная задача, однако она часто сопровождается техническими сложностями. Одной из наиболее запутанных ошибок является отказ веб-сервера Apache запускаться после внесения правок в конфигурационный файл. В этой статье мы разберем конкретную ситуацию, когда при попытке перезапуска httpd.exe возникает системная ошибка, указывающая на невозможность загрузки модуля wsap24.dll.
Рассмотрим ситуацию: при проверке синтаксиса или перезапуске Apache через командную строку пользователь получает следующее сообщение:
httpd.exe: Syntax error on line 169 of C:/Apache24/conf/httpd.conf: Cannot load
C:/Program Files/1cv8/8.3.16.1224/bin/wsap24.dll into server: %1 \xed\xe5 \xff\x
e2\xeb\xff\xe5\xf2\xf1\xff \xef\xf0\xe8\xeb\xee\xe6\xe5\xed\xe8\xe5\xec Win32.
Проанализируем этот текст. Самое важное скрыто в кодированной строке. Если перевести шестнадцатеричные коды (\xed\xe5...) в читаемый вид, мы получим фразу: "не является приложением Win32". Это ключевой маркер, который однозначно указывает на конфликт разрядности (битности) программного обеспечения.
Давайте разберем по шагам, почему возникает это несоответствие. Веб-сервер Apache и подключаемый к нему модуль расширения 1С (файл wsap24.dll) должны иметь одинаковую архитектуру:
В рассматриваемом примере мы видим команду httpd.exe -v, которая выдает:
Server version: Apache/2.4.41 (Win32)
Это означает, что установлен 32-битный сервер. В то же время путь к модулю 1С указан как C:/Program Files/1cv8/.... В 64-битных версиях Windows в папку C:/Program Files/ по умолчанию устанавливаются 64-битные приложения, а 32-битные — в C:/Program Files (x86)/. Следовательно, Apache (32 бит) пытается загрузить модуль от 64-битной платформы 1С. Это и вызывает критическую ошибку.
Для устранения ошибки нам необходимо привести систему к единообразию. Проанализируем два пути решения:
Вариант 1: Переход на 64-битный Apache (Рекомендуется)
Если ваша операционная система 64-битная (что в современных условиях является стандартом), лучше всего использовать 64-битный веб-сервер. Это позволит Apache использовать больше оперативной памяти и работать стабильнее с тяжелыми отчетами 1С.
httpd.conf путь к 64-битной DLL из папки C:/Program Files/1cv8/....Вариант 2: Использование 32-битного модуля 1С
Если вы решили оставить 32-битный Apache, вам нужно указать путь к 32-битной платформе 1С. Убедитесь, что при установке 1С был выбран компонент "Модули расширения веб-сервера". Путь в конфигурационном файле должен выглядеть примерно так:
LoadModule _1cws_module "C:/Program Files (x86)/1cv8/8.3.x.xxxx/bin/wsap24.dll"
Помимо битности, существует еще несколько факторов, которые могут помешать успешному запуску. Рассмотрим их подробнее, чтобы избежать повторных ошибок.
Сборки Apache (особенно популярные версии от Apache Lounge) жестко привязаны к версиям библиотек Visual C++. Если в системе не установлен соответствующий пакет (Redistributable) той же разрядности, что и Apache, сервер не сможет подгрузить модули. Например, для Apache версии VS16 требуются компоненты Visual Studio 2015-2019. Проверьте наличие установленных пакетов в панели управления.
Выясним, от чьего имени запущен Apache. Обычно это системная учетная запись SYSTEM. У этой учетной записи должны быть права на "Чтение и выполнение" не только на сам файл wsap24.dll, но и на всю родительскую папку bin. Если прав недостаточно, Apache выдаст ошибку, даже если путь указан идеально верно.
Проанализируем правила написания путей в конфигурационном файле Apache. Несмотря на то, что мы работаем в Windows, Apache предпочитает "линуксовый" стиль написания путей:
/ вместо обратных \.Program Files), обязательно заключайте весь путь в двойные кавычки.Пример правильной строки подключения модуля:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.16.1224/bin/wsap24.dll"
После того как сервер Apache успешно запустился, работа не заканчивается. Настройку публикации определяет файл default.vrd. Разберем типичную структуру этого файла:
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/MyBase"
ib="Srvr="ServerName";Ref="BaseName";">
<standardOdata enable="true"/>
</point>
Если после правки httpd.conf сервер стартует, но при попытке зайти в базу вы видите ошибку 404 или 500, проверьте правильность указания имени сервера и базы в атрибуте ib этого файла.
Обратите внимание на цифры в названии библиотеки. Они соответствуют версии Apache:
wsap22.dll — предназначен для Apache версии 2.2.wsap24.dll — предназначен для Apache версии 2.4.Использование несоответствующего модуля приведет к ошибке синтаксиса при старте службы.
Подводя итог, при возникновении ошибки загрузки модуля 1С первым делом проверьте результат команды httpd.exe -v и сравните его с расположением папки 1С (Program Files или Program Files (x86)). В 90% случаев проблема решается простой установкой 64-битной версии веб-сервера Apache, которая соответствует современным стандартам платформы 1С:Предприятие 8.3.