【问题标题】:PHP Curl will only work if executed in CLI, not via the webPHP Curl 只能在 CLI 中执行,而不是通过 Web 执行
【发布时间】:2013-02-17 22:34:50
【问题描述】:

我在这里有点困惑。我有一个文件 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 是否已启用它。我通过在命令行中执行它知道 curl 有效。

另外,我的服务器上没有 selinux 或类似的东西。

我将在 PHP 错误的情况下再次运行该脚本,看看我明天是否能找到任何东西。

【问题讨论】:

  • 请发布来自provision_test.php 的相关代码示例(如果不是很长,请发布整个内容)
  • 我想你已经在 apache 中启用了 curl,在通常位于 /etc/php5/apache/php.ini 的 php.ini 中。另外,我想,你已经做了sudo apt-get install php5-curl
  • “无法正常运行”---不是技术问题说明
  • 额外信息将包括您为自己调试所做的工作。我们是来帮忙的,但你必须自己做一些工作。例如验证基于 Web 的 PHP 是否已正确安装 curl。你检查错误情况了吗?也许网络服务器安全系统(selinux、suhosin 等)正在阻止请求。这些都是我们根本无法帮助您的事情,因为您完全没有提供任何有用的细节。
  • 看看我添加了什么。

标签: php apache curl web


【解决方案1】:

今天我遇到了与描述相同的问题。 从 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

希望这对您有所帮助。

【讨论】:

  • 如果这应该是一个答案,那就太令人困惑了。我建议对其进行一些更新以帮助理解它。
  • 我现在才看到你试图告诉我的迈克,在我调整我的帖子后,这是我在堆栈中的第一个帖子,我也在努力找到我的方式。抱歉!
  • 不用担心。每个人都必须学习。这看起来比你一开始的要好得多。
猜你喜欢
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 2020-07-02
  • 1970-01-01
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
  • 2019-02-03
相关资源
最近更新 更多