[英]PHP 5.3.8 Wordpress CURL Intermittent Error
我将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
报告ID:ec31f1ab-3b0a-11e1-9d5f-005056b30014
这似乎是以下PHP错误的体现,在5.3.7中引入了新版本的cURL: https ://bugs.php.net/bug.php ? id = 60576
如果您不需要新的cURL版本的新功能(例如从php.ini中指定的文件中读取证书),请从http://windows.php.net/下载相关的PHP 5.3.6 Zip文件。 downloads / releases / archives /并将ext \\ php_curl.dll替换为PHP 5.3.6版本。
如果您确实需要这些功能,这是一个悬而未决的问题。
希望这对某人有帮助!
我也遇到同样的问题。 我的配置如下。
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());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.