【问题标题】:Having issues with custom cronjob script within WordPress pluginWordPress 插件中的自定义 cronjob 脚本存在问题
【发布时间】:2019-02-22 04:02:39
【问题描述】:

我在为我的 WordPress 网站创建的自定义插件中找到的自定义 cron 脚本中存在问题。我可以通过网络浏览器毫无问题地执行 cron 脚本,但是,当它通过 cron 作业执行时,它不断出错并说它无法连接到数据库。

我的 cron 脚本位于我的插件文件夹中:

/home/site/wwwroot/wp-content/plugins/PLUGIN/cron.php

在脚本中我有以下行:

require_once('includes/config.php');

在我的/includes/config.php 文件中,我将其设置为包含 wp-config.php 文件:

define( 'ABSPATH', dirname(dirname(dirname(dirname(dirname(__FILE__))))) . '/' );
require_once(ABSPATH . 'wp-config.php');

我尝试了几种不同的方法来调用 cron.php 脚本,但似乎每次仅从 cron 任务运行时我仍然会遇到数据库连接错误。

关于如何让它正确执行的任何想法?

编辑:

我忘了提,这是我的 cron 作业中执行的:

cd D:\home\site\wwwroot\wp-content\plugins\PLUGIN\
php -f cron.php

【问题讨论】:

  • 您是否尝试打印 ABSPATH 变量以确保它指向正确的目录?
  • @bob_1982 - 是的,我也想过,一切都是正确的。经过一番挖掘,看起来我的 Azure 主机将数据库的连接字符串存储在 $_SERVER 变量中,并且当运行 cron 作业时,该变量似乎不存在。寻找替代方案.....
  • 你为什么使用 $_SERVER 变量,就好像你包含 wp-config.php 那么你可以直接访问 DB_PASSWORD etc.likedefine('DB_NAME', 'database_name_here'); /** MySQL 数据库用户名 /define('DB_USER', 'username_here'); /* MySQL数据库密码/define('DB_PASSWORD', 'password_here'); /* MySQL 主机名 */define('DB_HOST', 'localhost');
  • @bob_1982 不幸的是,这就是 Azure 在应用服务中设置 MySQL 的方式。
  • 哦,好的。那您找到解决方案了吗?

标签: php wordpress cron azure-webjobs


【解决方案1】:

如果它通过浏览器工作,您可以使用 wget 运行 cron。

wget https://example.com/wp-content/plugins/PLUGIN/cron.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    相关资源
    最近更新 更多