Вопрос или проблема
Я пытаюсь включить SOAP на моем сервере. SOAP установлен, но не отображается в php_info.
Версия PHP 5.4.39
Информация о системе: Linux ip-xxx-xxx-xxx-xxx.secureserver.net 2.6.32-042stab106.4 #1 SMP Пт 27 марта 15:19:28 MSK 2015 x86_64
Команда конфигурации:
'./configure' '--disable-fileinfo' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-gd-native-ttf' '--enable-libxml' '--enable-pdo=shared' '--enable-sockets' '--prefix=/usr/local' '--with-apxs2=/usr/local/apache/bin/apxs' '--with-curl=/opt/curlssl/' '--with-freetype-dir=/usr' '--with-gd' '--with-imap=/opt/php_with_imap_client/' '--with-imap-ssl=/usr' '--with-jpeg-dir=/usr' '--with-kerberos' '--with-libdir=lib64' '--with-libxml-dir=/opt/xml2/' '--with-mcrypt=/opt/libmcrypt/' '--with-mysql=/usr' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-openssl=/usr' '--with-openssl-dir=/usr' '--with-pcre-regex=/opt/pcre' '--with-pdo-mysql=shared' '--with-pdo-sqlite=shared' '--with-pic' '--with-png-dir=/usr' '--with-xpm-dir=/usr' '--with-zlib' '--with-zlib-dir=/usr'
Загруженный файл конфигурации: /usr/local/lib/php.ini
Который содержит: [soap]
;extension=soap.so
; Включить модуль расширения SOAP
extension="/usr/lib64/php/modules/soap.so"
Я не уверен, какая еще информация могла бы быть полезной, но любой помощь будет очень признательна.
php-soap
находится в EPEL, поэтому я бы не стал утруждать себя компиляцией.
Установите следующим образом:
yum install epel-release
yum makecache
yum install php-soap
Из вашей команды конфигурации видно, что вы не компилировали с конфигурацией SOAP.
Пожалуйста, попробуйте перекомпилировать PHP, добавив следующую опцию:
--enable-soap=shared
Таким образом, полная команда для вашей компиляции должна измениться на:
'./configure' '--disable-fileinfo' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-gd-native-ttf' '--enable-libxml' '--enable-pdo=shared' '--enable-sockets' '--prefix=/usr/local' '--with-apxs2=/usr/local/apache/bin/apxs' '--with-curl=/opt/curlssl/' '--with-freetype-dir=/usr' '--with-gd' '--with-imap=/opt/php_with_imap_client/' '--with-imap-ssl=/usr' '--with-jpeg-dir=/usr' '--with-kerberos' '--with-libdir=lib64' '--with-libxml-dir=/opt/xml2/' '--with-mcrypt=/opt/libmcrypt/' '--with-mysql=/usr' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-openssl=/usr' '--with-openssl-dir=/usr' '--with-pcre-regex=/opt/pcre' '--with-pdo-mysql=shared' '--with-pdo-sqlite=shared' '--with-pic' '--with-png-dir=/usr' '--with-xpm-dir=/usr' '--with-zlib' '--with-zlib-dir=/usr'--enable-soap=shared
Затем скопируйте скомпилированный модуль SOAP с помощью:
cp modules/soap.so /usr/lib64/php/modules
Перезапустите ваш веб-сервер Apache с помощью:
/etc/init.d/httpd restart
Затем проверьте, активировано ли расширение SOAP на странице phpinfo().
Попробуйте установить, используя следующую команду.
yum install php54-php-soap
Ответ или решение
Для успешного включения SOAP на вашем сервере с CentOS 6.6 и PHP версии 5.4.39 важно следовать определенным шагам и принципам настройки, учитывая специфику операционной системы и версии PHP. Рассмотрим подход к решению этой задачи, используя метод TEA (Теория, Пример, Применение).
Теория
SOAP (Simple Object Access Protocol) – это протокол обмена сообщениями, основанный на XML, который позволяет веб-приложениям взаимодействовать друг с другом независимо от их реализации на различных платформах и языках. Для активации SOAP в PHP требуется, чтобы библиотека была установлена и загружена при запуске PHP-скриптов. В вашем случае, несмотря на то, что PHP уже установлен, SOAP не отображается в результатах phpinfo()
, что указывает на его неактивность или неправильную конфигурацию.
Пример
-
Использование репозитория EPEL: Пакет
php-soap
доступен в репозитории EPEL (Extra Packages for Enterprise Linux), облегчающем установку дополнительных пакетов, отсутствующих в стандартных репозиториях. -
Компиляция из исходников: В вашем конфигурационном скрипте отсутствует параметр
--enable-soap=shared
, необходимый для включения поддержки SOAP. Добавление этого параметра позволяет компилировать и подключать SOAP как расширение PHP.
Применение
Установка из EPEL
-
Добавление репозитория EPEL:
yum install epel-release yum makecache
-
Установка php-soap:
yum install php-soap
Эти команды позволят установить необходимый пакет, после чего следует перезапустить веб-сервер, чтобы изменения вступили в силу:
/etc/init.d/httpd restart
Компиляция из исходников
Если вы предпочитаете компиляцию из исходников, особенно если это предпочтительно для вашей конфигурации PHP (например, для специфических настроек или оптимизаций), следуйте следующим шагам:
-
Редактирование конфигурации команды: Добавьте
--enable-soap=shared
../configure --disable-fileinfo --enable-bcmath --enable-calendar --enable-ftp --enable-gd-native-ttf --enable-libxml --enable-pdo=shared --enable-sockets --prefix=/usr/local --with-apxs2=/usr/local/apache/bin/apxs --with-curl=/opt/curlssl/ --with-freetype-dir=/usr --with-gd --with-imap=/opt/php_with_imap_client/ --with-imap-ssl=/usr --with-jpeg-dir=/usr --with-kerberos --with-libdir=lib64 --with-libxml-dir=/opt/xml2/ --with-mcrypt=/opt/libmcrypt/ --with-mysql=/usr --with-mysql-sock=/var/lib/mysql/mysql.sock --with-openssl=/usr --with-openssl-dir=/usr --with-pcre-regex=/opt/pcre --with-pdo-mysql=shared --with-pdo-sqlite=shared --with-pic --with-png-dir=/usr --with-xpm-dir=/usr --with-zlib --with-zlib-dir=/usr --enable-soap=shared
-
Компиляция и установка модуля SOAP:
make make install
-
Копирование модуля:
cp modules/soap.so /usr/lib64/php/modules
-
Редактирование файла php.ini: Убедитесь, что строка
extension=soap.so
не закомментирована в файле/usr/local/lib/php.ini
. -
Перезапуск веб-сервера:
/etc/init.d/httpd restart
-
Проверка конфигурации: Убедитесь, что SOAP успешно загружен, вызвав
phpinfo()
в одном из PHP-скриптов и проверив наличие секции SOAP.
Заключение
Два предложенных подхода — через yum
и EPEL для автоматической установки пакетов, и ручная компиляция — позволяют гибко настроить сервер в зависимости от ваших нужд. Неправильное подключение или отсутствие параметров могут вынудить выбирать именно метод компиляции, особенно при уникальной среде рабочего приложения. Выбор зависит от ваших приоритетов в конфигурации PHP и необходимости поддержки специфических функций. Соблюдая предложенные шаги, вы сможете активировать и использовать расширение SOAP в вашей среде с минимальными трудностями.