PHP 5.3.8 Wordpress CURL间歇性错误

时间:2012-01-10 03:43:26

标签: php wordpress curl iis-7.5 fastcgi

我将我的IIS 7.5 Web服务器从PHP 5.2.17升级到PHP 5.3.8。 这样做之后,我的Wordpress安装开始间歇性地产生500个错误:

  

HTTP错误500.0 - 内部服务器错误
  C:\ Program Files(x86)\ PHP \ v5.3 \ php-cgi.exe - FastCGI进程意外退出

     

详细错误信息

     

模块 FastCGIModule
  通知 ExecuteRequestHandler
  处理程序 PHP53_via_FastCGI
  错误代码 0x000000ff

我还在这台服务器上运行Drupal和Zend Framework,两者都使用CURL,但这些都没有产生错误。因此,我会说这是CURL的Wordpress实现特有的。

我查看了Windows应用程序错误日志,发现了以下错误:

  

错误申请名称:php-cgi.exe,版本:5.3.8.0,时间戳:0x4e537f4b
  错误模块名称:php_curl.dll,版本:5.3.8.0,时间戳:0x4e537f64
  例外代码:0xc0000005
  故障偏移:0x00036864
  错误进程id:0x378
  故障应用程序启动时间:0x01cccf17892cff0e
  错误的应用程序路径:C:\ Program Files(x86)\ PHP \ v5.3 \ php-cgi.exe
  错误模块路径:C:\ Program Files(x86)\ PHP \ v5.3 \ ext \ php_curl.dll
  报告编号:ec31f1ab-3b0a-11e1-9d5f-005056b30014

2 个答案:

答案 0 :(得分:2)

这似乎是以下PHP错误的一种表现形式,在5.3.7中引入了新版本的cURL: https://bugs.php.net/bug.php?id=60576

如果您不需要新cURL版本的新功能(例如从php.ini中指定的文件中读取证书),请从http://windows.php.net/downloads/releases/archives/下载相关的PHP 5.3.6 Zip文件并替换使用PHP 5.3.6版本的ext \ php_curl.dll。

如果你确实需要这些功能......这是一个悬而未决的问题。

希望这有助于某人!

答案 1 :(得分:1)

我也遇到了同样的问题。我的配置如下。

  

Windows 7
Wordpress 3.9.1(土耳其语)
Apache 2.4.9 x86 VC11   (Windows Lounge二进制文件)
PHP 5.5.14 ts x86 VC11

我正在使用代理。此外,我的代理需要身份验证。我发现文件wp-includes/class-http.php中的一个请求方法存在问题。

我通过替换下面的行(行号是1247)解决了这个问题


    if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) {

        curl_setopt( $handle, CURLOPT_PROXYTYPE, CURLPROXY_HTTP );
        curl_setopt( $handle, CURLOPT_PROXY, $proxy->host() );
        curl_setopt( $handle, CURLOPT_PROXYPORT, $proxy->port() );

        if ( $proxy->use_authentication() ) {
            curl_setopt( $handle, CURLOPT_PROXYAUTH, CURLAUTH_ANY );
            curl_setopt( $handle, CURLOPT_PROXYUSERPWD, $proxy->authentication() );
        }

    }

以下给出的行。


    if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) {

        $isPHP5 = version_compare(PHP_VERSION, '5.0.0', '>=');

        if ($isPHP5) {
            curl_setopt($handle, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
            curl_setopt($handle, CURLOPT_PROXY, $proxy->host());
            curl_setopt($handle, CURLOPT_PROXYPORT, $proxy->port());
        } else {
            curl_setopt($handle, CURLOPT_PROXY, $proxy->host() . ':' . $proxy->port());
        }

        if ($proxy->use_authentication()) {
            if ($isPHP5)
                curl_setopt($handle, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);

            curl_setopt($handle, CURLOPT_PROXYUSERPWD, $proxy->authentication());
        }

    }