Я пытаюсь установить расширение SOAP для PHP на сервере Centos 6.4. Я довольно незнакома с менеджерами пакетов, установкой пакетов из CLI и настройкой их в PHP. Я достаточно компетентен в управлении файлами php.ini и других файлов PHP (soap.ini и т. Д.).
Я попытался установить это с помощью команды:
yum install php-soap
но это дает мне следующую ошибку:
yum install php-soap Loaded plugins: downloadonly, fastestmirror Setting up Install Process Loading mirror speeds from cached hostfile drivesrvr | 951 B 00:00 Resolving Dependencies There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them. The program yum-complete-transaction is found in the yum-utils package. --> Running transaction check ---> Package php-soap.x86_64 0:5.3.3-40.el6_6 will be installed --> Processing Dependency: php-common(x86-64) = 5.3.3-40.el6_6 for package: php-soap-5.3.3-40.el6_6.x86_64 --> Running transaction check ---> Package php-common.x86_64 0:5.3.3-40.el6_6 will be installed --> Processing Conflict: php54-common-5.4.36-1.ius.el6.x86_64 conflicts php-common < 5.4 --> Finished Dependency Resolution Error: php54-common conflicts with php-common-5.3.3-40.el6_6.x86_64 You could try using --skip-broken to work around the problem ** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows: cloud-init-0.7.5-10.el6.centos.2.x86_64 has missing requires of PyYAML
Обратите внимание на эту проблему:
Error: php54-common conflicts with php-common-5.3.3-40.el6_6.x86_64
Если я перечислю все пакеты, связанные с PHP, которые я установил, я получаю следующее:
yum list installed | grep php php-php-gettext.noarch 1.0.11-3.el6 @epel php-tcpdf.noarch 6.1.1-1.el6 @epel php-tcpdf-dejavu-sans-fonts.noarch 6.1.1-1.el6 @epel php54.x86_64 5.4.36-1.ius.el6 @ius php54-bcmath.x86_64 5.4.36-1.ius.el6 @ius php54-cli.x86_64 5.4.36-1.ius.el6 @ius php54-common.x86_64 5.4.36-1.ius.el6 @ius php54-devel.x86_64 5.4.36-1.ius.el6 @ius php54-gd.x86_64 5.4.36-1.ius.el6 @ius php54-mbstring.x86_64 5.4.36-1.ius.el6 @ius php54-mcrypt.x86_64 5.4.36-1.ius.el6 @ius php54-mysql.x86_64 5.4.36-1.ius.el6 @ius php54-pdo.x86_64 5.4.36-1.ius.el6 @ius php54-pear.noarch 1:1.9.5-2.ius.el6 @ius php54-pecl-apc.x86_64 3.1.13-2.ius.el6 @ius php54-pecl-memcache.x86_64 3.0.8-1.ius.el6 @ius php54-suhosin.x86_64 0.9.37-1.ius.el6 @ius php54-tidy.x86_64 5.4.36-1.ius.el6 @ius php54-xml.x86_64 5.4.36-1.ius.el6 @ius phpMyAdmin.noarch 4.0.10.7-1.el6 @epel
Я также попытался установить расширение SOAP с помощью груши:
sudo pear install SOAP-0.13.0
Это утверждает, что расширение было успешно установлено:
WARNING: "pear/HTTP_Request" is deprecated in favor of "pear/HTTP_Request2" Did not download optional dependencies: pear/Mail, pear/Mail_Mime, pear/Net_DIME, use --alldeps to download automatically WARNING: "pear/Net_URL" is deprecated in favor of "pear/Net_URL2" pear/SOAP can optionally use package "pear/Mail" pear/SOAP can optionally use package "pear/Mail_Mime" pear/SOAP can optionally use package "pear/Net_DIME" downloading SOAP-0.13.0.tgz ... Starting to download SOAP-0.13.0.tgz (85,945 bytes) ....................done: 85,945 bytes downloading HTTP_Request-1.4.4.tgz ... Starting to download HTTP_Request-1.4.4.tgz (17,109 bytes) ...done: 17,109 bytes downloading Net_URL-1.0.15.tgz ... Starting to download Net_URL-1.0.15.tgz (6,303 bytes) ...done: 6,303 bytes downloading Net_Socket-1.0.14.tgz ... Starting to download Net_Socket-1.0.14.tgz (5,600 bytes) ...done: 5,600 bytes install ok: channel://pear.php.net/Net_URL-1.0.15 install ok: channel://pear.php.net/Net_Socket-1.0.14 install ok: channel://pear.php.net/HTTP_Request-1.4.4 install ok: channel://pear.php.net/SOAP-0.13.0
Однако, несмотря на то, что добавлена строка 'extension = soap.so' в мой php.ini, SOAP все еще не отображается в моем phpinfo (). Я также получаю следующую ошибку при запуске 'php -v' или 'pear info SOAP-0.13.0' из командной строки:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/soap.so' - /usr/lib64/php/modules/soap.so: cannot open shared object file: No such file or directory in Unknown on line 0
Казалось бы, нет файла soap.so в '/ usr / lib64 / php / modules /' или где-либо еще на сервере, я проверил с помощью:
cd / find -name soap.so
Я удалил и повторно установил пару раз, и каждый раз каждый раз.
Может ли кто-нибудь дать объяснения относительно того, почему любой из этих методов не работает? Желаем предоставить дополнительную информацию, если потребуется.
Основываясь на комментариях выше @EtanReisner, я смог успешно установить пакет SOAP.
Проблема заключалась в том, что у меня было сочетание пакетов PHP из репозиториев EPEL и IUS. Как видно из приведенного выше
yum list installed | grep php
Большинство этих пакетов PHP из репозитория IUS, похоже, что пакет php-soap, который я пытался установить с помощью
yum install php-soap
Был пакет на основе EPEL, поэтому конфликт был выделен в общем файле php. В соответствии с приведенными выше предложениями я выполнил следующие
yum list | grep ^php54
Результаты которых содержат более подходящий пакет SOAP на основе IUS:
php54-soap.x86_64 5.4.36-1.ius.el6 ius
После того, как я удалил любую из неудавшихся установок пакета SOAP, оставленных моими первоначальными попытками, я побежал
yum install php54-soap
Который установил первый раз без каких-либо проблем.
Во второй части этого вопроса я не нашел решений относительно того, почему менеджер пакетов на основе PEAR не смог установить пакет успешно.