簡體   English   中英

PHP Cron作業:包含文件不工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM