[英]PHP Cron Job: Including file not working?
我每晚都會運行一個cron作業,但由於某種原因,它說我嘗試包含的文件是不存在的:
Warning: require(../includes/common.php): failed to open stream: No such file or directory in /home/fini7463/public_html/cron/journeyNotifications.php on line 2
Fatal error: require(): Failed opening required '../includes/common.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/fini7463/public_html/cron/journeyNotifications.php on line 2
這是代碼:
set_include_path('/home/fini7463/public_html/includes/');
require 'common.php';
'common.php'文件的位置如下
public_html => cron => journeyNotifications.php
=> includes => common.php
我甚至設置了包含路徑(如代碼所示),但我仍然收到此錯誤。 問題是什么?
謝謝!
如果確實require('../includes/common.php')
,則相對於當前工作目錄遍歷路徑。
如果確實require('common.php')
,則在include路徑中以及調用require()的腳本目錄中搜索文件。
要解決此問題,請首先更改crontab中的目錄:
cd /home/fini7463/public_html; php -f cronjob.php
在調用set_include_path()
上一個路徑。 調用將您傳遞的任何內容替換為上一個路徑作為參數,因此,如果您的任何代碼加載其他庫(即:PEAR / PECL模塊),則在您刪除包含路徑時將無法再訪問它們。 你應該使用:
set_include_path(get_include_path() . PATH_SEPARATOR . '/home/fini7463/public_html/includes/');
這會將您的新路徑追加到包含路徑。
同樣,當cron啟動腳本時,你永遠無法確定工作目錄是什么。 它可能是您運行腳本的用戶的主目錄,可能是/ tmp,或完全是其他目錄。 如果要在腳本中使用相對路徑來執行任何操作,則必須確保將工作目錄設置為已知值。 通過在crontab中使用'cd',或者在執行涉及相對路徑的任何事情之前在腳本中使用'chdir'。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.