【发布时间】: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