从计划任务执行php时未定义的$\脚本变量
提前感谢您抽出时间 我有一个php脚本,应该每天运行一次。我们在客户端服务器上设置了一个计划任务,它执行一个批处理文件,该批处理文件基本上调用以下内容:从计划任务执行php时未定义的$\脚本变量,php,batch-file,scheduled-tasks,undefined,superglobals,Php,Batch File,Scheduled Tasks,Undefined,Superglobals,提前感谢您抽出时间 我有一个php脚本,应该每天运行一次。我们在客户端服务器上设置了一个计划任务,它执行一个批处理文件,该批处理文件基本上调用以下内容: php-cgi.exe -d short_open_tag=On ".\my_script.php" 如果我通过浏览器直接导航到我的_script.php,一切正常。当我从命令行或通过计划任务执行批处理脚本时,会出现多个错误 任务计划程序的最后一次运行结果始终为“(0xFFFFFFFF)” 命令行中的第一个错误是“注意:未定义索引:DOCUM
php-cgi.exe -d short_open_tag=On ".\my_script.php"
如果我通过浏览器直接导航到我的_script.php,一切正常。当我从命令行或通过计划任务执行批处理脚本时,会出现多个错误
$document_root = $_SERVER[ 'DOCUMENT_ROOT' ];
$_SERVER[ 'FULL_URL' ] .= $_SERVER[ 'SCRIPT_NAME' ];
如果我使用var_dump()变量$\u服务器变量,我会看到文档根和脚本名都在那里,并且填充正确。我以系统用户的最高权限运行计划任务
如何从命令行和计划任务中停止这些错误?您应该使用
php.exe
或php win.exe
而不是php cgi.exe
。有关SAPI之间差异的详细信息,请参阅
但请注意,$\u服务器
superglobal在CLI中的填充方式与web服务器不同。(我的安装使用php.exe
返回一个空字符串)
如果要获取当前文件路径,请使用\uuuu file\uuu
。对于当前目录,请使用\uuuuu DIR\uuuu
一个让你尝试的快速测试;这将返回当前目录:
php -r "echo __DIR__;"
当从存储过程调用批处理文件时,我发生了错误,但当我直接调用php-cgi.exe并将参数添加到参数文本框时,一切都运行得很好
我猜我的批处理文件没有正确的权限。
$\u SCRIPT
?你是说$\u服务器?此外,错误报告通常包含行号,如果您能显示相关的行号会更好。@路人感谢您的关注。我将添加相关行。我不确定,但如果您问我,当您在命令行中运行它时,没有服务器,因此我怀疑$\u server
中的大多数条目是否会丢失。在命令行中尝试var\u dump()
,查看您可以得到什么。