代码之家  ›  专栏  ›  技术社区  ›  Peter VARGA

从命令行或系统()运行时不同的$\u服务器输出

  •  1
  • Peter VARGA  · 技术社区  · 6 年前

    如果你有这些非常简单的脚本:

    <?php
    system("php -c /etc/php7/cli/php.ini /some-path/exec.php");
    ?>
    

    exec.php文件:

    <?php
    print_r($_SERVER);
    ?>
    

    跑步 exec.php 从命令行,我得到了预期的输出 $_SERVER :

    ...
    [LESSKEY] => /etc/lesskey.bin
    [NNTPSERVER] => news
    [MANPATH] => /usr/share/man:/usr/local/man:/usr/local/share/man
    [XDG_SESSION_ID] => 2
    [HOSTNAME] => AAEB-DEV203LD
    [XKEYSYMDB] => /usr/X11R6/lib/X11/XKeysymDB
    [HOST] => AAEB-DEV203LD
    [TERM] => linux
    [SHELL] => /bin/bash
    ...
    

    system foo.php 在浏览器选项卡中调用脚本,然后 $\u服务器 完全不同,它看起来或多或少和 Environment 节自 phpinfo()

    ...
        [APACHE_CONF_INCLUDE_FILES] => 
        [mpm_found] => true
        [APACHE_CONF_INCLUDE_DIRS] => 
        [SYSCONFIG_FILE] => /etc/sysconfig/apache2
        [APACHE_START_TIMEOUT] => 2
        [HTTPD_MODULE_IDS] =>  actions_module alias_module ...
        [APACHE_SERVERNAME] => 
    ...
    

    $\u服务器 system() 函数-缺少我们需要的大量信息。

    我在网上找不到任何东西可以给我一个提示,为什么输出如此不同。

    操作系统:SLES 12.3
    PHP:7.2.10版本
    阿帕奇:2.4 MPM

    为什么在命令行和 系统() 系统() 调用时的函数 执行.php 从命令行 php -c /etc/php7/cli/php.ini /some-path/exec.php ?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Peter VARGA    6 年前

    很好。我能弄清楚它是怎么工作的,我不清楚。

    跑步 php $_SERVER 所有导出的环境变量。因此 $\u服务器 有入口吗 HOSTNAME .

    exec() 从在浏览器选项卡PHP集合中执行的脚本 内容 Environment 显示的节 phpinfo() .

    主机名 $\u服务器 我得打电话 putenv("HOSTNAME=value"); 之前 执行() .