在以下作业在crontab中运行后,我在/ var / mail / username中的错误消息中得到以下三行…
15 * * * * /Applications/MAMP/htdocs/iconimageryidx/includes/insertPropertyRESI.php
错误:
/applications/mamp/htdocs/iconimageryidx/includes/insertpropertyRESI.php: line 1: ?php: No such file or directory /applications/mamp/htdocs/iconimageryidx/includes/insertpropertyRESI.php: line 3: syntax error near unexpected token `'initialize.php'' /applications/mamp/htdocs/iconimageryidx/includes/insertpropertyRESI.php: line 3: `require_once('initialize.php');
我试图执行的PHP脚本实际上是存在的,我已经绝对确定拼写是正确的几次。 我之前运行了另一个脚本的crontab,它工作得很好…任何想法?
第二个和第三个错误是来自第三行的脚本(我试图用crontab运行的):
<?php require_once('initialize.php'); require_once('insertPropertyTypes.php'); $sDate; if(isset($_GET['startDate'])) { $sDate = $_GET['startDate']; } else { $sDate = ''; } $insertResi = new InsertPropertyTypes('Listing', $sDate, 'RESI'); ?>
当我在浏览器中运行脚本insertPropertyRESI.php时,它运行得很好吗? 另外,initialize.php和insertPropertyTypes.php与insertPropertyRESI.php在同一个目录下
我正在使用PHP 5.3.5的MAMP
thakns的帮助:?
您正试图执行没有有效的shebang的脚本。
添加shebang作为这样的脚本的第一行(当然调整path):
#!/usr/bin/php
或者将crontab项更改为:
15 * * * * /usr/bin/php /Applications/MAMP/htdocs/iconimageryidx/includes/insertPropertyRESI.php
它在浏览器中运行的原因是因为您的服务器被configuration为自动编译和提供PHP文件。
克朗另一方面,没有那种奢侈; 默认情况下它会运行任何你放入它作为一个bash脚本。
从你的Cronjob的外观来看,你正在运行PHP文件,而不使用phpparsing器,因此Cron试图将脚本作为bash脚本运行。
如果你把php -f放在PHP脚本的前面,你要告诉Cron使用php部分来运行这个命令,你应该会发现它现在会运行。
或者,您可以编辑您的代码,并在脚本的开头添加!#/usr/bin/php 。 当Cron运行这个文件时,它将使用php来运行命令,而不是bash 。
在命令行上运行一个php文件与在apache之类的web服务器上运行它不同。 要在命令行上运行一个php脚本,你需要: