PHP+;cURL:简单测试脚本不工作(在一台机器上)
下面是一个非常简单的PHP脚本,它使用cURL加载网页并显示PHP+;cURL:简单测试脚本不工作(在一台机器上),php,apache,curl,Php,Apache,Curl,下面是一个非常简单的PHP脚本,它使用cURL加载网页并显示 <?php $ch = curl_init("http://www.reddit.com/"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); $content = "Hello, World!"; $content = curl_exec($ch); curl
<?php
$ch = curl_init("http://www.reddit.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$content = "Hello, World!";
$content = curl_exec($ch);
curl_close($ch);
echo $content;
?>
在我的本地机器上,它工作得非常好——但在我的服务器机器上不行。在这里,我在Firefox中得到一个“连接被重置”错误。引起麻烦的行似乎是$content=curl\u exec($ch)代码>。如果我评论这句话,我会看到Hello,World代码>在两台机器上
在两台机器上调用phpinfo()
时,cURL
部分看起来非常相似。它在一台机器上工作,但在另一台机器上不工作,这可能是什么问题呢。基本上,两者都运行Ubuntu14.04,使用Apache2和PHP5。哪些配置或权限可能不同。我有点不知道该去哪里找
编辑:正如arkascha所建议的,我已经检查了Apacheerror.log
文件。事实上,如果我在执行curl\u exec
命令时看到以下错误:
[core:notice][pid 28267]AH00051:子pid 28274退出信号分段故障(11),可能在/etc/apache2中出现coredump
我以前遇到过类似问题,并用解决方案解决了。在您的文件顶部,请在下面添加一行并再次测试
<?php
ini_set('zend.enable_gc', 0);
....
....
我刚刚经历过类似的事情。两台服务器之间的CURL连接在大部分时间都有效,但大约五分之一的时间会崩溃
当它崩溃时,Firefox会报告“连接被重置”,Safari会告诉我“服务器意外断开了连接”。Apache错误日志将显示退出信号分段故障(11)
添加跟踪后,我发现导致崩溃的实际上是curl\u close
函数,而不是curl\u exec
,该函数实际上工作正常(其结果出现在我的日志中)
最后,我在代码中找到了这一行
curl_setopt($curlSession,CURLOPT_VERBOSE,true)代码>
…用于将CURL会话的原始数据输出到日志文件,以便进行调试。由于我注释掉了那一行,错误就停止了
因此,似乎使用CURLOPT_VERBOSE可能会导致CURL崩溃,并导致PHP/Apache崩溃。(我还看到一位CPP程序员在讨论CPP上的CURL时说了同样的话。)阅读这个链接@ManojKushwaha你介意更精确一点吗?你能指出你在那一页中指的是什么吗?那么为什么该页面与此相关呢?我建议您查看http服务器错误日志文件……您确定要像这样使用$content
两次吗?这毫无意义。执行后检查curl\u error
。它可能包含一个你正在寻找的错误。@Jigar你们甚至懒得读这个问题吗?OP解释说!不幸的是,没有变化。