PHP Curl仅在CLI中执行,而不是通过Web执行

时间:2013-02-17 22:34:51

标签: php apache curl web

我在这里有点困惑。我有一个文件 provision_test.php ,当使用 php provision_test.php 执行时,它将正常运行,执行curl并获取页面。但是,当从网络 http://example.com/provision_test.php 执行时,它无法正常运行。我正在运行Ubuntu Linux 12.04.1服务器,x86_64。

任何想法都将不胜感激......如果您需要任何额外信息,请告诉我,我很乐意帮助您。

编辑1

文件:provision_test.php

<?php

    $domain = "example.net";
    $password = "123";
    $serverip = "example.com:10000";

    $ch = curl_init();

    $userpwd = 'root:password';

    curl_setopt($ch, CURLOPT_URL, "http://{$serverip}/virtual-server/remote.cgi?program=create-domain&domain={$domain}&pass={$password}&default-features");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($ch, CURLOPT_USERPWD, $userpwd);

    curl_exec($ch);
    curl_close($ch);

?>

系统上安装了php5-curl软件包。但是我没有在php.ini文件中专门启用curl。我该怎么做呢?

我可以验证php5-curl软件包是否已正确安装,但我无法确认apache是​​否已启用它。我知道在命令行中执行它会卷曲。

此外,我的服务器上没有selinux或类似内容。

我将再次运行脚本并显示PHP错误,以确定我明天是否找到任何内容。

1 个答案:

答案 0 :(得分:0)

今天我遇到了与上述问题相同的问题。 从CLI开始,脚本工作正常,从浏览器开始,最终出现错误7

请使用以下方式启用详细模式:

curl_setopt($ch, CURLOPT_VERBOSE, true);

从CLI运行脚本 如果您遇到与我相同的问题,那是因为代理也可能是身份验证,因此您必须在curl脚本中添加以下选项

$proxy = 'url or ip';
$proxy_port = 8080;
$proxy_username = 'username';
$proxy_password = 'password';
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy_port);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_username.':'.$proxy_password);

这节省了我工作日的最后30分钟;-D

希望这对你有所帮助。