【问题标题】:PHP file_get_contents not working from CRONPHP file_get_contents 在 CRON 中不起作用
【发布时间】:2021-01-15 22:46:13
【问题描述】:

我正在使用 PHP 和 CRON 作业来获取 URL 的内容:

$content = file_get_contents("http://www.example.com");

然后我使用此内容作为 HTML 时事通讯发送。我正在运行 PHP 7,并且已启用相关的 PHP INI 设置:

allow_url_fopen = On

但是,$content 变量仍然为空,并且我的 error_log 显示以下错误:

PHP Warning:  file_get_contents(http://www.example.com): 
failed to open stream: no suitable wrapper could be found 
in /home/xxxx/public_html/cron.php on line xxx

cron.php 中的所有其他内容都按预期工作。

另外,如果我通过浏览器手动访问 cron.php,file_get_contents 工作正常。

运行 WHM/cPanel 等

非常感谢任何帮助。

【问题讨论】:

  • 你是如何设置 php.ini 选项的?可能有两种不同的 php.ini 文件:一种用于来自 Web 浏览器的请求,另一种用于从命令行运行 PHP 脚本(您的 cronjob 将执行此操作)。
  • 通过 WHM 的 MultiPHP 管理器和 Multi INI 管理器。在 New Multi PHP Manager 和即将弃用的 Manager 中,它们都启用了该设置。此外,我通过 /usr/local/bin/ea-php70 声明 cron.php 来调用 CRON 作业,以确保它使用的是正确版本的 PHP。
  • 你可能是对的。我想知道我是否可以以某种方式将 phpinfo 输出为 CRON?
  • 嗯,不幸的是,我对 WHM 了解不多。我会询问您的托管服务提供商是否可以为 CLI 提供单独的 php.ini。您也可以尝试使用 curl 扩展名吗?有关使用 curl 获取页面的示例,请参阅 geeksforgeeks.org/php-curl。
  • 这很好,您也可以尝试从 cron 脚本中打印出 phpinfo() 并查看内容。

标签: php cron file-get-contents


【解决方案1】:

在脚本中获取 php.ini 的路径:

php_ini_loaded_file();

设置 php.ini 的路径:

/opt/php/7.3/bin/php -c /var/www/u1234567/php-bin/php.ini -f /var/www/u1234567/public_html/site.com/script.php

【讨论】:

  • 检查 php.ini:php -i 或 ini_get() (php.net/ini_get)。
  • 谢谢。这就是我很快要尝试的。希望手动声明特定的已编辑 INI 文件可以解决问题。非常感谢!
  • @UlrichEckhardt 这行得通。我运行了 php -i,确认了 ini 文件,然后使用 -c 在我的 cron 作业中手动声明了它。谢谢大家:)
猜你喜欢
  • 1970-01-01
  • 2012-08-30
  • 2013-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-14
  • 2015-07-02
  • 2021-08-12
相关资源
最近更新 更多