【问题标题】:cron file_get_contents() errorcron file_get_contents() 错误
【发布时间】:2011-02-27 22:03:21
【问题描述】:

我有一个使用file_get_contents()的php文件

它在浏览器中运行良好,但在作为 cron 作业运行时失败并出现以下错误:

警告:file_get_contents(): URL 文件访问在服务器中被禁用 配置在 /path/to/the/phpfile.php 第 22 行

这是我正在使用的:

/usr/bin/php5 -q /path/to/the/phpfile.php

我已经在 php.ini 中设置了allow_url_fopen = true,但这似乎没有任何效果。

不过,一切都在浏览器中完美运行。如何解决这个问题?

【问题讨论】:

  • 您是从 https 的安全协议中读取数据吗?
  • 不,它是一个 http API 调用。

标签: php command-line cron


【解决方案1】:
  1. php --info | more
  2. 运行并查看它使用了哪个 php.ini(前 5 行)
  3. 更改那个 php.ini 文件

或者你可以使用--php-ini /path/to/ini(做man php)来指定你要使用的ini文件。

【讨论】:

  • 我觉得将我的答案合并到你的答案中会得到一个相当完整的答案:)
  • php --info " 更多显示 - /usr/local/php-5.2.6-1/etc/php.ini。但我找不到那个文件夹?
  • 我可以访问 /home/my_site_folder 但我在任何地方都看不到 /usr。这是否意味着我将无法更改 php.ini 文件?
【解决方案2】:

如果您从远程系统加载文件,则应该使用 curl。 file_get_contents 不处理网络延迟、重定向或错误捕获。并且显然在服务器配置中禁用。

【讨论】:

    【解决方案3】:

    至少有些 Linux 发行版有多个 PHP 配置(php.ini 文件)。 比如Debian测试有这两个:

    /etc/php5/apache2/php.ini
    /etc/php5/cli/php.ini
    

    在上面的示例中,不同的 PHP 配置用于 Web 调用(通过 apache)和命令行调用。

    可能是你的问题。

    【讨论】:

      【解决方案4】:

      您可能无意中在系统上拥有多个 PHP 和/或 php.ini 副本。你有电脑的管理员权限吗?对php 进行全局搜索,看看会出现什么。

      【讨论】:

      • 这是 WRT 我的网络服务器,我无法访问 PC。 “PHP 的副本”是指 PHP 的不同版本吗?
      • 我的意思是不同的安装、不同的版本或不同的配置文件。比如chronos的回答。
      【解决方案5】:

      在您的 cron 配置中使用 php -cron 代替使用 php -q。 它对我有用。

      【讨论】:

        猜你喜欢
        • 2011-09-26
        • 2019-02-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-02
        • 2015-07-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多