【发布时间】:2015-03-20 15:12:30
【问题描述】:
我有以下 PHP 脚本,它建立与 MySQL 数据库的连接并运行 SQL 查询以获取 4 个字段,然后从输出中创建一个逗号分隔的文本文件。如果我将此 PHP 文件放在我的 public_html 文件夹中并从我的网络浏览器浏览到它,它就会正常运行。但是,我想将此 PHP 脚本放在与 public_html 相同级别的唯一文件夹中,并通过我的 Cpanel 中的 CRON 作业调用它。当我这样做时,我收到附加的错误。
脚本位置 /home2/mywebsite/whereIam/myscript.php
文本文件输出位置 /home2/mywebsite/public_html/text.txt
定时任务 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: line 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);
?>
【问题讨论】:
-
您忘记在 CRON 作业中包含 PHP 可执行文件,因此它试图将 PHP 代码作为
bash脚本执行。您的 cron 命令应如下所示:php /home2/mywebsite/whereIam/myscript.php -
尝试像
0 0 * * * php /home2/mywebsite/whereIam/myscript.php这样将命令添加到cron作业中,有帮助吗?或者,您可以在脚本的第一行添加#!/usr/bin/php,并将权限设置为可执行。 -
成功了!太开心了,谢谢!