0

我正在使用./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 帖子,但无法正常工作。如果我使用域 url 在浏览器中点击 cron.php,它工作得非常好。

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

请帮我。

4

1 回答 1

0

如果您检查 wp-config.php(我想这是一个 WordPress 配置文件),那么在脚本的 ~bottom 您将看到该行

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

不幸的是,WP 将“引导”文件直接包含在配置中... 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

于 2017-09-29T05:48:10.983 回答