LiteSpeed Support Forums

LiteSpeed Support Forums (http://www.litespeedtech.com/support/forum/index.php)
-   PHP (http://www.litespeedtech.com/support/forum/forumdisplay.php?f=19)
-   -   [solved] Problem with SoapClient and LiteSpeed (http://www.litespeedtech.com/support/forum/showthread.php?t=6595)

Sindre 01-27-2013 02:51 AM

[solved] Problem with SoapClient and LiteSpeed
 
Hello,

I am struggling with a strange problem. I have a script which makes a simple Soap request to my Magento API:

PHP Code:

try {
   
$proxy= new SoapClient($host.'/index.php/api/soap/?wsdl',array('exceptions' => 1,'trace' => 1,"connection_timeout" => 120));
   
$sessionId$proxy->login($apiuser$apikey);
   echo  
"Magento Api accessed Successfully.";
   echo 
"<br>Session Id is:"$sessionId;
} catch (
Exception $e) {
   echo 
"==> Error: ".$e->getMessage();


When I run this through a browser I get
Code:

SOAP-ERROR: Parsing WSDL: "Couldn't load from 'http://....../index.php/api/soap/index/wsdl/1/' : failed to load external entity "http://..../index.php/api/soap/index/wsdl/1/"
However, when I run it from the command line it works fine:
Code:

/usr/local/lsws/fcgi-bin/lsphp5 path_to_script
Magento Api accessed Successfully.<br>Session Id is: xxxx

It is the same lsphp5 binary that is configured in LiteSpeed LSAPI external app.

Any ideas? I am sort of out of ideas at the moment.

NiteWave 01-27-2013 03:09 AM

searched the net, your script may need access /etc/hosts

so, check open_basedir, it blocks reading /etc/hosts, disable open_basedir

Sindre 01-27-2013 04:38 AM

Quote:

Originally Posted by NiteWave (Post 45856)
searched the net, your script may need access /etc/hosts

so, check open_basedir, it blocks reading /etc/hosts, disable open_basedir

Thanks, but I don't see why the script would need access to the /etc/hosts file? Also, why would it work through the CLI but not in a browser or using WGET? There must be something in LiteSpeed which is blocking the request. It just hangs until the timeout value is reached.

NiteWave 01-27-2013 05:54 AM

command line lsphp5 and exteral app lsphp5 may pick up different php.ini.

to confirm, check if open_basedir are same value
#/usr/local/lsws/fcgi-bin/lsphp5 phpinfo.php |grep open_basedir

and in browser, access domain.com/phpinfo.php and search open_basedir

Sindre 01-27-2013 06:04 AM

Quote:

Originally Posted by NiteWave (Post 45873)
command line lsphp5 and exteral app lsphp5 may pick up different php.ini.

to confirm, check if open_basedir are same value
#/usr/local/lsws/fcgi-bin/lsphp5 phpinfo.php |grep open_basedir

and in browser, access domain.com/phpinfo.php and search open_basedir

I already checked that. The same php.ini is used both by the CLI and LiteSpeed. open_basedir is not set.

Code:

# /usr/local/lsws/fcgi-bin/lsphp5 -i | grep open_basedir
open_basedir => no value => no value


NiteWave 01-27-2013 06:12 AM

then strace lsphp5 process when access the php script in browser, check the output of strace, you may get clue there.

Sindre 01-27-2013 12:13 PM

Finally!! I just found the problem. In my LSWS config, the PHP suEXEC Max Conn was set to 2. I increased it to 3 and now it works :)

Not sure why, but this setting has an impact on the behavior of the SoapClient.

webizen 01-28-2013 10:20 AM

the default is 5. maybe you changed that settings in the past for some reason. anyway, it is a bit of surprise to see the impact you described.

Sindre 01-28-2013 02:21 PM

Yes, it was changed in order to better manage the resources on the server (it is used for shared web hosting). My only guess is that the SoapClient creates a new socket which counts as a suexec process, but it is kind of strange indeed.


All times are GMT -7. The time now is 05:54 AM.