在shell脚本

时间:2017-09-29 05:20:14

标签: php wordpress shell cron include-once

我正在使用像 ./ first.sh

这样的shell脚本运行php文件

在first.sh中,我使用以下命令运行php文件

COMMAND="/usr/bin/php /home/mydirectory/public_html/members/cron/cron.php"

在cron文件下我有这段代码

mail('myemail@gmail.com','fff','aaa');

include_once '/home/mydirectory/public_html/members/wp-config.php';

mail('myemail@gmail.com','fff1','aaa1');

当我执行.sh文件时,我只收到第一封电子邮件而没有收到第二封电子邮件。在第二封电子邮件中,我写了一些更多的代码来获取wordpress帖子,但没有工作。如果我使用域名网址在浏览器中点击cron.php,它的工作正常。

我已经测试了很多其他stackoverflow答案,但没有任何对我有用。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

如果你检查wp-config.php(我想这是一个WordPress配置文件),那么在脚本的底部你会看到一行

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

不幸的是,WP包含一个“bootstrap”文件直接进入配置... wp-settings.php包含许多其他wp文件并初始化等等。所以,这必须在Wordpress级别调试。 WP结束在wp-settings.php或其他包含文件中的执行,所以你的php cron退出/死掉。 目前,我没有调试本地wp安装(抱歉),但我99%肯定wp结束执行。

您可以将所需的信息从wp-config(如数据库主机,用户名等)硬编码到您的cron中。

否则,您可以使用token_get_all解析php文件以检索值(2年前我​​遇到过类似问题,不幸的是我在旧办公室有代码)。 http://php.net/manual/en/function.token-get-all.php