hi ! I try to use the remoting framework with the 2.2.14 ISPConfig version. But i 've got an error : "Fatal error: Cannot redeclare class soapclient in /var/www/web3/web/site/soap.lib.php on line 4101" I have followed the tutos here, recompile ispconfig with xml, curl and put the new ioncube loader. Please help ! thanx !!!
Either you included the soap library twice or the PHP version that you use in your websites ahs a soep extension installed that conflicts with the soap library that comes with the example files.
so i should get rid of "soap" stuff in the php.ini ? ok ... so I've got 3 files php.ini on my system : /root/ispconfig/php/php.ini -----> no soap extension /etc/php5/cli/php.ini ------> soap lines are now commented with a ; /etc/php5/apache2/php.ini ----> soap lines are now commented with a ; I've done : /etc/init.d/apache2 restart ... but same error ! (I run a Ubuntu 7.04 server ...)
The rekevant php-ini file is: /etc/php5/apache2/php.ini If you can not remove it by commenting it out, you can try to uninstall the soap package or you use this soap package instead of the library used in the remoting examples.
ok ... but i've done like this : [soap] ; Enables or disables WSDL caching feature. ; soap.wsdl_cache_enabled=1 ; Sets the directory name where SOAP extension will put cache files. ; soap.wsdl_cache_dir="/tmp" ; (time to live) Sets the number of second while cached file will be used ; instead of original one. ; soap.wsdl_cache_ttl=86400 I've restarted apache but i've got the same error !!!
All right ! So : the one billion dollars question : How to disable soap ? Thanx ! (i must say that i have NOT any extension line like extension=soap.so or something like that in my php.ini ...)
create a test file containing: Code: <?php phpinfo(); and load it in the browser, Find out if it's compiled as a module or part of PHP.
Ok : here is the output of the phpinfo(); : soap Soap Client enabled Soap Server enabled Directive Local Value Master Value soap.wsdl_cache 1 1 soap.wsdl_cache_dir /tmp /tmp soap.wsdl_cache_enabled 1 1 soap.wsdl_cache_limit 5 5 soap.wsdl_cache_ttl 86400 86400 You can see it "live" here -----> http://www.francofolibre.org/phpinfo.php I think soap is part of the php5-cli package under ubuntu/debian, right ? So what should i do ?
It sure looks like a module, what happens when you do a php -m on the command line? I'm not a deb user, so I'm not sure how that distro packages things.
With a php -m, i can see "soap" among the modules list ... ~$ php -m [PHP Modules] ... soap ... [Zend Modules]
What's the output of Code: grep extension /etc/php5/apache2/php.ini ? What's the output of Code: ls -la /etc/php5/apache2/conf.d ?
:~$ grep extension /etc/php5/apache2/php.ini ; dynamically loaded extension (either a PHP extension or a Zend extension), ; you may only use these constants *after* the line that loads the extension. ; leading '/'. You must also specify the file extension being used including ; Directory in which the loadable extensions (modules) reside. ; extension_dir = "./" ; If you wish to have an extension loaded automatically, use the following ; extension=modulename.extension ; extension=msql.dll ; extension=msql.so ; needs to go here. Specify the location of the extension with the ; extension_dir directive above. ; Sets the directory name where SOAP extension will put cache files. extension=imagick.so extension=imap.so extension=json.so extension=mcrypt.so extension=memcache.so extension=php_soap.so :~$ ls -la /etc/php5/apache2/conf.d lrwxrwxrwx 1 root root 9 2007-06-17 09:58 /etc/php5/apache2/conf.d -> ../conf.d
I've deleted the line with "php_soap.so" and restarted apache. and ... same error : "Fatal error: Cannot redeclare class soapclient in /var/www/web3/web/site/soap.lib.php on line 4101" Now i 've got : ~# grep extension /etc/php5/apache2/php.ini ; dynamically loaded extension (either a PHP extension or a Zend extension), ; you may only use these constants *after* the line that loads the extension. ; leading '/'. You must also specify the file extension being used including ; Directory in which the loadable extensions (modules) reside. ; extension_dir = "./" ; If you wish to have an extension loaded automatically, use the following ; extension=modulename.extension ; extension=msql.dll ; extension=msql.so ; needs to go here. Specify the location of the extension with the ; extension_dir directive above. ; Sets the directory name where SOAP extension will put cache files. extension=imagick.so extension=imap.so extension=json.so extension=mcrypt.so extension=memcache.so and in /etc/php5/apache2/conf.d, there is NO soap.ini curl.ini mhash.ini mysqli.ini pdo.ini pdo_sqlite.ini pspell.ini snmp.ini tidy.ini xsl.ini gd.ini ming.ini mysql.ini pdo_mysql.ini ps.ini recode.ini sqlite.ini xmlrpc.ini
This error is an error in your PHP script, meaning that you try to declare the class soapclient twice. It's not in any way related to your removing the SOAP extension from PHP.
You might make sure your not double loading the soap.lib.php Been there, done that a few million times. Aggravating isn't it?
Yes, you're right BUT ... The question is : how can i do to verify that i'm not double loading the soap.lib.php ? I've tried to look for the soap thing ... but i can not find where it is. It seems to be included in the php5-cli package ... right ? If i comment the include("soap.lib.php"); in test.php, i get a new type of error (nothing weird here ... as it's expected !): Warning: SoapClient::SoapClient(https://192.168.0.1:81/remote/index.php) [function.SoapClient-SoapClient]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in /var/www/web3/web/site/test.php on line 18 So : i know i might double loading soap thing ... but How can i avoid this ? Thanx
Try this in both your /etc/httpd/conf and /etc/httpd/conf.d and run the following: Code: # grep soap.lib.php * and see if you get some hits.