【发布时间】:2019-10-28 03:55:39
【问题描述】:
我必须每两个小时从 cron 作业运行一个 PHP 文件,并且在通过 cron 运行 PHP 脚本时出现 MySQL 数据库连接错误。该脚本可以正常运行,完全符合我的预期,它可以从浏览器甚至命令行运行。
我已阅读在 Google 搜索结果中找到的所有答案,但没有一个可以解决我的问题。我认为没有任何与我的问题相关的答案,所以我问这个问题。
以下是数据库连接php脚本:
<?php
$cs = "localhost";
$cu = "root";
$cp = "mypassword";
// $cp = "";
$cn = "mydatabasename";
$conn = @mysqli_connect($cs, $cu, $cp, $cn);
if (!$conn) {
die("Database connection error... " . mysqli_connect_error());
}
我正在从浏览器和命令行运行脚本,一切正常,正如我预期的那样,就在我从 cronjob 运行它时,我收到以下错误:
数据库连接错误...用户'root'@'localhost'的访问被拒绝(使用密码:NO)
假设 root、mypassword、mydatabasename 是正确的凭据,因为我可以在浏览器甚至命令行上成功运行脚本。我在 cronjob 中使用 PHP 文件的绝对路径。
我正在通过这个命令运行 cronjob:
0 0-23/2 * * * php -f /var/www/html/project-name/execute-cronjob.php >> /var/www/html/project-name/output.log
我使用的是 Ubuntu,并且有一个 VPS 服务器。
【问题讨论】:
-
请不要使用
@抑制错误,因为这会隐藏 潜在的错误消息(这对于调试至关重要)。顺便说一句,您是否收到上述代码或$cp = "";未注释的错误消息?否则我不知道您将如何获得using password: NO。 -
你能试试
127.0.0.1而不是localhost吗? -
@MagnusEriksson 在我的本地计算机上密码为空,所以我在本地使用它,然后在它上传到服务器时发表评论。我也很困惑,当我使用密码时我怎么会遇到问题!感谢您澄清“@”...
-
是否有任何适当的方法可以使用使用并需要 MySQL 数据库连接的 cronjob 运行 PHP 文件?
-
对于 cron 任务,如果你是 linux 用户,你可以使用 shell scipt。如果您是 Windows 用户,则使用批处理脚本。