2011-08-19 20 views
2

我想调试PHP函数stream_socket_client但我真的不知道如何。这是我遇到的麻烦的代码:stream_socket_client超时

 $this->socket = @stream_socket_client(
      $remote, $errno, $errstr, 
      $this->request->getConfig('connect_timeout'), 
      STREAM_CLIENT_CONNECT, $context 
     ); 
     if (!$this->socket) { 
      throw new HTTP_Request2_ConnectionException(
       "Unable to connect to {$remote}. Error: {$errstr}", 
       0, $errno 
      ); 
     } 

抛出异常和错误显示“无法连接到TCP://www.dropbox.com:80错误:连接超时” 。此代码来自经过良好测试的非常受欢迎的Wordpress plugin。我正在处理的服务器有一些怪癖,例如我被允许通过PHP等上传或删除文件,所以我想知道是否有任何PHP设置可以防止stream_socket_client工作,以及如何检查这些设置是否适用于我的服务器。

+1

也许服务器的传出http连接被阻止?防火墙问题?你有外壳访问服务器?尝试在命令行执行“telnet www.dropbox.com:80”并查看是否连接。如果没有,那么这不是PHP的问题。 –

+1

对不起,我没有shell访问权限。这不是我的服务器,我只是为某人安装某些东西,虽然它不在网上酒店,但安装程序与控制面板和所有内容一样... –

回答

3

尝试检查allow_url_fopen。 请参阅http://php.net/manual/en/filesystem.configuration.php

+1

根据phpinfo,allow_url_fopen处于“打开”状态。 –

+1

好的。你可以试试fsockopen并检查错误吗?也许这个错误与流无关,并与防火墙或其他相关。 –

+1

好吧,例如fsockopen('www.google.com',80);似乎没有工作。也连接超时,以及dropbox.com自然。我不知道这意味着什么?我需要更改什么在我的托管环境中? –