Cron作业未运行php脚本
我已使用下面的命令在我的cpanel中创建了一个cron作业: /usr/bin/php-q/home/user/public_html/folder/subfolder/sync.php php的内容几乎是这样的。当我使用domain.com/folder/subfolder/sync.php这样的域运行它时,它不会出错,但当cron作业应该运行时,我看不到预期的结果,这意味着cron作业没有运行脚本。有谁能告诉我可能有什么问题吗Cron作业未运行php脚本,php,cron,Php,Cron,我已使用下面的命令在我的cpanel中创建了一个cron作业: /usr/bin/php-q/home/user/public_html/folder/subfolder/sync.php php的内容几乎是这样的。当我使用domain.com/folder/subfolder/sync.php这样的域运行它时,它不会出错,但当cron作业应该运行时,我看不到预期的结果,这意味着cron作业没有运行脚本。有谁能告诉我可能有什么问题吗 <?php $dir = str_replace("p
<?php
$dir = str_replace("public_html","", $_SERVER["DOCUMENT_ROOT"]);
$dir = $dir . "configuration.php";
if (file_exists($dir))
{
require_once($dir);
sync();
}
else
{
// echo ("Can't find the access data.");
}
function sync()
{
$connection = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
if(mysqli_connect_errno())
{
// echo ("Failed to connect the database.");
exit();
}
else
{
if(mysqli_ping($connection))
{
$query = "SELECT OR UPDATE WHATEAVER FROM TABLE;";
$result = mysqli_multi_query($connection, $query);
if($result)
{
// Do stuff
}
else
{
// echo("Failed to excute the query.");
}
}
else
{
// echo("Failed to ping the connection.");
}
}
mysqli_close($connection);
}
?>
$\u服务器['DOCUMENT\u ROOT']
在调用PHP之前由您的Web服务器(例如Apache)创建。如果您通过cronjob运行脚本,那么您将绕过Web服务器,DOCUMENT\u ROOT
将不存在
您应该以另一种方式确定配置文件的位置。一种方法是对文件位置使用PHP的内置常量,如\uuuuu file\uuuu
或\uuuu DIR\uuuu
:
$dir = __DIR__ . "/configuration.php";
\uuuu DIR\uuuu
指的是包含当前文件的文件夹,因此它将成为/home/user/public\u html/folder/subfolder/configuration.php
根据您对$\u SERVER['DOCUMENT\u ROOT']
所做的操作,我假设您的配置文件是public\u html
中的一个文件夹,因此您可以执行以下操作:
$dir = __DIR__ . "/../../../configuration.php";
我更改了$dir,但仍然没有更改。但它每次试图运行时都会给我发一封电子邮件,邮件上写着“无法打开输入文件”。有什么建议吗?听起来像是bash错误,而不是PHP错误。检查以确保PHP实际位于/usr/bin/PHP
中,并在cron设置中仔细检查sync.PHP
文件的完整路径。另外,您是否能够通过SSH连接到服务器并尝试从那里执行完整的命令?