執行的檔案路徑是/crontab/go.php
/
是我的網站根目錄
我在 go.php 中有透過 require_once dirname(__FILE__) .
引入其他文件
假設我在其中引入了 /function/a.php
最後有引入一個 /function/core.php
我的 core.php 中有些 function 是要依賴 a.php 的
所以我在一開頭就引入(路徑確定是正確的,a 跟 b 來自不同路徑)
我設定每一分鐘執行腳本一次
於是我打算交給伺服器跑
我的 a.php 中有三個 function
但我 go.php 會用到的只有兩個
我還是一樣引入它
但我發現就因此無法運行了?
我初步判定(應該是說幾乎確定)是因為「那一個」我沒有用 function 也把它引進來導致無法執行⋯
是真的有這樣的事情嗎?
這三個 function 都是正常無錯誤的
我把兩個 function 提出來後就可以正常執行
但是引入了 a.php (有三個 function)就不行⋯⋯
(為了確保我用網址打過,運行是正常的)
使用cron幾個重點要注意
1.正常來說,如果你是直接命令式的,因該在用cron運行的命令是要為主機路徑才對。不該用web路徑。所以我推測。你因該不是直接命令式的cron運行方式。可能是透過某些主機後台軟體運行的。
2.測試cron的命令是否正常,不能用瀏覽器直接來試。那並不是很準確的。正常因該要在其主機端運行一次命令試看看有無錯誤。
3.使用cron的php程式碼如果有引用的話,要非常注意要使用完整路徑。因為在運行時的路徑,並非一定是在你的web路徑上。所以有很大的可能性是引用錯誤。這是用瀏覽器去運行沒辦法發現到的問題之一。
其實一般如果有必要跑cron的程式碼。大多數而言,都會在其一開頭就事先宣告好web作業路徑。
會利用如 $dir = dirname(FILE); 這樣的語法。來取得實際的主機路徑後。
再去做引入的動作。最好是不要引入時再去用dirname(FILE)來取。
畢竟會因為程式不同路徑而無法正確的取得你要的路徑。
正常如果可以的話,會在其web根目錄下的程式碼來取得web根路錄的實體路徑。並將其寫入常數內
因為運行的方式不同,會有不同的路徑意思。