PHP文件无法从Cron运行

我有以下PHP脚本,用于建立与MySQL数据库的连接并运行SQL查询以获取4个字段,然后从输出中创建一个逗号分隔的文本文件.如果我将此PHP文件放在我的public_html文件夹中,然后从Web浏览器浏览到该文件,则它可以正常运行.但是我想将此PHP脚本放置在与public_html相同级别的唯一文件夹中,并通过Cpanel中的CRON作业来调用它.当我这样做时,我得到了附带的错误.

脚本位置
/home2/mywebsite/whereIam/myscript.php

文本文件输出位置
/home2/mywebsite/public_html/text.txt

Cron Job
0 0 * * * /home2/mywebsite/whereIam/myscript.php

错误信息
/home2/mysite/whereiam/myscript.php:第1行:?php:无此类文件或目录
/home2/mysite/whereiam/myscript.php:第2行:意外令牌附近的语法错误(‘
/home2/mysite/whereiam/myscript.php:第2行:$fh = fopen(“ / home2 / mywebsite / public_html / text.txt”,“ w”);’

<?php
    $fh = fopen("/home2/mywebsite/public_html/test.txt", "w");
    $con = mysql_connect("localhost","user_readoly","SomePassword");
    mysql_select_db("nameofDatabase", $con);

    /* insert field values into data.txt */

    $result = mysql_query("SELECT `field_129`, `field_131`,`field_26` FROM  `a_custom_database_5` WHERE `field_129` <> ''");   
    while ($row = mysql_fetch_array($result)) {          
        $num = mysql_num_fields($result) ;    
        $last = $num - 1;
        for($i = 0; $i < $num; $i++) {            
            fwrite($fh, $row[$i]);                       
            if ($i != $last) {
                fwrite($fh, ",");
            }
        }                                                                 
        fwrite($fh, "\n");
    }
    fclose($fh);
?>

解决方法:

有两种可能性:

>将cronjob更改为:

0 0 * * * php /home2/mywebsite/whereIam/myscript.php

请注意,已经添加了php命令,并使用文件名作为参数.否则,cron会尝试执行PHP文件,但它不知道应将其作为PHP执行.
>有一种方法可以告诉操作系统PHP文件应作为PHP执行.将其作为第一行添加到脚本中:

#!/usr/bin/php

还设置权限,以使文件可执行.现在,您可以从shell像执行命令一样执行它-而且cronjob无需修改即可工作.

当然,这是假定PHP可执行文件在/usr/bin/php中.您可以使用哪个php命令在系统上找到位置.

我想选择哪种方法取决于个人喜好.我喜欢第二个选项,因为它允许您从命令行执行文件而无需显式使用php命令.但是,随着第二个选项移动到另一台服务器(可能具有不同的php路径),则意味着您必须编辑文件-第一个选项不需要.

上一篇:PHP的fopen函数是否实现某种缓存?


下一篇:php-打开.gz文件并读取/替换