Php
當文件確實存在時,為什麼 crontab 會給出“沒有這樣的文件或目錄”錯誤?
在 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,它工作得很好……有什麼想法嗎?
第二個和第三個錯誤來自以下腳本中的第 3 行(我嘗試使用 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 位於同一目錄中
我正在使用 MAMP 和 PHP 5.3.5
謝謝你的幫助:?
您正在嘗試執行沒有有效shebang的腳本。
像這樣添加shebang作為腳本的第一行(當然調整路徑):
#!/usr/bin/php
或者將 crontab 條目更改為:
15 * * * * /usr/bin/php /Applications/MAMP/htdocs/iconimageryidx/includes/insertPropertyRESI.php
它在您的瀏覽器中執行的原因是因為您的伺服器配置為自動編譯和提供 PHP 文件。
另一方面,Cron 沒有那麼奢侈。預設情況下,它將執行您作為
bash
腳本放入其中的任何內容。從您的 Cronjob 的外觀來看,您正在執行 PHP 文件而不使用
php
解析器,因此 Cron 嘗試將腳本作為bash
腳本執行。如果你把
php -f
PHP 腳本的位置放在前面,你是在告訴 Cron 使用這些php
元件執行命令,你應該會發現它現在會執行。或者,您可以編輯程式碼並將
#!/usr/bin/php
其添加到腳本的開頭。當 Cron 執行此文件時,它將php
用於執行命令,而不是bash
.