OS: Windows 2003
寫了一隻 bat,想要用 php -f 的指令執行 server 端某一隻 php
用 Server 排程去跑,bat 程式如下
C:\AppServ\php5\php.exe -f C:\AppServ\www\test\admin\test.php
用 browser 執行該網頁 code 有 work,但用 php -f 的話會有路徑問題
Warning: include_once(../config.inc): failed to open stream: No such file or directory in C:\AppServ\www\te\
st\admin\function.php on line 3
include 的方式改成 $_SERVER['DOCUMENT_ROOT'].'/function.php'; 也不行
請問這個問題該怎麼解決呢
命令列模式下,是沒有 $_SERVER 這一群變數的。所以取 $_SERVER['DOCUMENT_ROOT'] 只會是空字串。
錯誤發生在 C:\AppServ\www\test\admin\function.php 第三行,請貼出這支程式前五行內容,別人才能幫你看是什麼錯誤吧?
另外那支 config.inc 位在哪個目錄下,也請貼出來。
那就用兩次dirname()再串接config.inc吧,ex:
$configFile = dirname(dirname(__FILE__))."config.inc";
更正:(少了目錄分隔符號)
$configFile = dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR."config.inc";
可以考慮用 silly 的作法,以 __FILE__ 這個常數來取得目前 php 的絕對目錄,再去 include 你所要的 config.inc 檔案。
不過我是覺得奇怪,在 windows 版本的 php 中,就算是 / 與 \ 混用,php 也能正確抓到檔案所在,沒理由不吃 ../ 這種路徑。所以才請你貼出程式碼,看看是不是你寫錯什麼了。