我将我的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
答案 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());
}
}