2011-06-05 49 views
1

在Windows XP系統上,我有test.bat的

C:\Path\to\php.exe -f "C:\Path\to\test.php" 

我也有test.php的

require_once ($_SERVER ['DOCUMENT_ROOT'] . '/Inc/Class/Connect_DB.php'); 

...更多的代碼。

當我在「CMD模式」下執行test.bat時,它返回致命錯誤,說它找不到require_once文件。

相同的文件在瀏覽器上正常工作。它似乎無法識別bat文件中的$_SERVER變量。 (我打算通過後面的schtasks.exe運行test.bat文件)

爲什麼不能在這裏讀取$_SERVER變量?

+0

如果你在一個批處理文件運行PHP,而不是網頁服務,但作爲**命令行的事* *,'$ _SERVER ['DOCUMENT_ROO']'是什麼意思?它所指的服務器在哪裏? – pavium 2011-06-05 02:49:17

回答

2

轉儲$ _SERVER並檢查是否設置了文檔根目錄。在我的安裝$ _SERVER可從cli獲得,但DOCUMENT_ROOT鍵設置爲空字符串。即 - >「」。

你會過得更好在的線使用的東西越來越路徑:

<?php echo dirname(__FILE__);?> 
    //you can put this in variable, 
    $base_dir = dirname(__FILE__); 
    //append another path .. 
    $lib_dir = $base_dir . "/lib/"; 
    // Notice require does not need parentheses! ;) 
    require_once $lib_dir . "db_connect.php"; 

有這樣做的方法很多,但應該給你一個想法。

快樂編碼!從CLI調用時

+0

謝謝,但我怎樣才能定義文檔根的絕對路徑? – user706087 2011-06-05 05:39:08

+0

你不需要$ _SERVER ['DOCUMENT_ROOT'],你可以把它放在某個變量中:例如:$ base_root =「/ path/to/my/document_root /」;或者使用我上面給你的代碼。在php.net上查找dirname()和__FILE__並查看它的作用,它們非常方便知道。如果您需要幫助,請回復我。 – stefgosselin 2011-06-05 08:45:38

+0

由於我在文件中使用了太多的$ _SERVER ['DOCUMENT_ROOT'],並且包含了許多文件,我只是將$ _SERVER ['DOCUMENT_ROOT']覆蓋爲「C:Xampp/to/app /」。 (有時爲了測試目的,我在瀏覽器上執行這個文件,所以我真的想用varialbe,因爲它是)。但是,謝謝你,祝你有美好的一天! – user706087 2011-06-05 20:52:16