Installing php-soap with yum and pear not working
I am trying to install the SOAP extension for PHP on a Centos 6.4 server. I'm pretty unfamiliar with package managers, installing packages from the CLI, and setting them up in PHP. I am quite competent in managing php.ini files and other PHP files (soap.ini, etc.).
I tried to install this using the command:
yum install php-soap
but it gives me the following error:
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
Please note this issue:
Error: php54-common conflicts with php-common-5.3.3-40.el6_6.x86_64
If I list all PHP related packages that I have installed, I get this:
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
I also tried to install the SOAP extension using pear:
sudo pear install SOAP-0.13.0
This claims the extension was installed successfully:
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
However, despite adding the line 'extension = soap.so' to my php.ini, SOAP still doesn't show up in my phpinfo (). I also get the following error when running 'php -v' or 'pear info SOAP-0.13.0' from the command line:
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
It would seem there is no soap.so file inside '/ usr / lib64 / php / modules /' or anywhere else on the server, I checked with:
cd /
find -name soap.so
I uninstalled and re-installed a couple of times and every time every time.
Can anyone provide an explanation as to why none of these methods work? It's nice to provide additional details if required.
source to share
Based on the comments above by @EtanReisner, I was able to successfully install the SOAP package.
The problem was that I had a mix of PHP packages from EPEL and IUS repositories. As seen from the above
yum list installed | grep php
Most of these PHP packages are from the IUS repository, it looks like the php-soap package I was trying to install with
yum install php-soap
There was an EPEL based package so the conflict was highlighted in the common php file. As per the suggestions above, I did the following
yum list | grep ^php54
Results that contain a more appropriate IUS based SOAP package:
php54-soap.x86_64 5.4.36-1.ius.el6 ius
After removing all the failed SOAP package installations left by my initial attempts, I ran
yum install php54-soap
Which is installed for the first time without any problems that have ever been so.
I didn't find a solution in the second part of this question as to why the PEAR based package manager was unable to install the package successfully.
source to share