Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP+;cURL:简单测试脚本不工作(在一台机器上)_Php_Apache_Curl - Fatal编程技术网

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脚本,它使用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所建议的,我已经检查了Apache
error.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解释说!不幸的是,没有变化。