Cron作业未运行php脚本

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

我已使用下面的命令在我的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("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连接到服务器并尝试从那里执行完整的命令?