通过bat文件在Windows上运行php脚本会在require_once上返回错误($ _SERVER ['Document_Root']);

时间:2011-06-05 02:41:13

标签: php batch-file scheduled-tasks

在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变量?

2 个答案:

答案 0 :(得分: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";

有很多方法可以做到这一点,但这应该会给你一个想法。

快乐的编码!

答案 1 :(得分:0)

从CLI

调用时,

documentroot为空

使用“__DIR__”:http://php.net/manual/en/language.constants.predefined.php