我在今年 2 月初因為試著將專案移到樹莓派上, 看看能否順利執行, 結果可以, 但也因此回到樹莓派與 Python 的研究上, 但不久又轉向到 MicroPython on ESP8266 上. 雖然發現 Hostinger 上跑的 crontab 有異常, 但實在無暇檢查到底哪裡出錯. 既然來到 Hostinger 後台, 那就順便檢查看看. 打開 cron job 執行報告, 發現是匯入函式庫失敗 :
PHP Warning: include(../db.php): failed to open stream: No such file or directory in /home/u865685xxx/public_html/cron/fetch_taifex_options_pcr.php on line 141
檢查匯入函式庫原始碼如下 :
//載入 webbot 函式庫
include_once("../db.php"); //匯入資料庫設定檔 (必須)
include_once("../lib/mysqli.php"); //匯入資料庫模組 (必須)
include_once("../lib/parse.php"); //匯入剖析模組 (必須)
include_once("../lib/http.php"); //匯入http模組 (必須)
# PHP absolute path to root
# PHP Warning: include_once() Failed opening '' for inclusion
所以我將程式碼改成如下 :
$root=$_SERVER['DOCUMENT_ROOT']; //$root="/home/u865685122/public_html"
include_once($root."/db.php"); //匯入資料庫設定檔 (必須)
include_once($root."/lib/mysqli.php"); //匯入資料庫模組 (必須)
include_once($root."/lib/parse.php"); //匯入剖析模組 (必須)
include_once($root."/lib/http.php"); //匯入http模組 (必須)
但結果還是一樣, 用瀏覽器測試 OK, 但 cron job 還是不行.
後來我用線上客服的 Hecko 先生, 他說應該用明確的根目錄路徑, 可在 "HOSTING/HOME ROOT" 中查得 :
"No, that would be /home/u865685xxx/public_html/db.php, It must start with a "/" to show that it's a complete path"
改為如下寫法後果然已可正常運作 :
/* 載入 webbot 函式庫 */
$root="/home/u865685xxx/public_html";
include_once($root."/db.php"); //匯入資料庫設定檔 (必須)
include_once($root."/lib/mysqli.php"); //匯入資料庫模組 (必須)
include_once($root."/lib/parse.php"); //匯入剖析模組 (必須)
include_once($root."/lib/http.php"); //匯入http模組 (必須)
參考 :
# 關於 cron jobs 執行頻率的調整問題
# cron jobs crontab 排程教學
沒有留言:
張貼留言