Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从计划任务执行php时未定义的$\脚本变量_Php_Batch File_Scheduled Tasks_Undefined_Superglobals - Fatal编程技术网

从计划任务执行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脚本,应该每天运行一次。我们在客户端服务器上设置了一个计划任务,它执行一个批处理文件,该批处理文件基本上调用以下内容:

php-cgi.exe -d short_open_tag=On ".\my_script.php"
如果我通过浏览器直接导航到我的_script.php,一切正常。当我从命令行或通过计划任务执行批处理脚本时,会出现多个错误

  • 任务计划程序的最后一次运行结果始终为“(0xFFFFFFFF)”
  • 命令行中的第一个错误是“注意:未定义索引:DOCUMENT\u ROOT”
  • 命令行中的第二个错误是“注意:未定义的索引:SCRIPT\u NAME”
  • 给出错误的行:

    $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()
    ,查看您可以得到什么。