【问题标题】:Not able to run php script from cron无法从 cron 运行 php 脚本
【发布时间】:2015-08-23 22:13:49
【问题描述】:

我在 ubuntu 14.04 上运行 LAMP 系统。我有一个使用 php 的 rss 提要,它每 1 小时运行一次,MySQL 存储数据。我的 php 文件曾经在 cron 中使用 php 完美运行了大约 15 天,但它不再工作了

我的 cron 如下

0 * * * *  /usr/bin/php /var/www/html/rss.php >/dev/null

我的 php 脚本在浏览器(firefox/chrome)上运行良好

当我在 cron 中使用 wget 运行 php 脚本时,它工作正常

0 * * * *  wget http://www.mywebsite.com/rss.php >/dev/null

【问题讨论】:

  • 运行cd / && /usr/bin/php /var/www/html/rss.php会得到什么?
  • 嗨 Daniil,上述命令的输出是 php 脚本尝试运行 5-6 秒,我再次看到 root@tb:/# 屏幕。从浏览器或 wget 运行时,我的 php 代码至少运行 6-7 分钟,并且我有从 ph pscript 编写的 txt 文件,以查看脚本是否已运行。 php 脚本没有运行
  • 我们可以看看你的剧本吗? PHP CLI 配置与 web one 不同
  • 我的php代码是1500行
  • 你有一些基于网络的东西($_SERVER 变量),一些依赖于 PATHES 的东西(例如包含?)

标签: php mysql apache cron wget


【解决方案1】:

您的脚本正在使用亲属路径。

当您在浏览器中打开此脚本时,它会尝试在 /var/www/html/ 中查找文件。

当您在 cron 中执行此操作时,它会尝试在 / 中查找文件。

将其放在脚本的开头:

define('ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);

现在更改每个相关的包含或打开器:

include ROOT . "db.php"

...

    if (($handle = fopen(ROOT . "tbcatlist.csv", "r")) !== FALSE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-01
    • 2012-06-03
    • 1970-01-01
    • 2018-07-05
    • 2011-08-10
    • 2018-03-22
    • 2021-06-22
    • 2019-07-23
    相关资源
    最近更新 更多