Если есть эти очень простые сценарии:
foo.php:
<?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
...
Когда exec.php
выполняется командойФункция system
в скрипте foo.php
вызывается на вкладке браузера, тогда вывод для $_SERVER
полностью отличается и выглядит более или менее точно так же, как раздел 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] =>
...
В чем проблема:
В выводе $_SERVER
- работает через функцию system()
- отсутствует много необходимой нам информации.
Я не нашел в Интернете ничего, что могло бы подсказать мне, почему выходные данные так сильно отличаются.
ОС: SLES 12.3
PHP: 7.2.10
Apache:2.4 MPM
Мой вопрос:
Почему выходные данные сильно отличаются при работе в командной строке и system()
в сеансе Apache, и могу ли я получить такой же выводзаsystem()
функция при вызове exec.php
из командной строки с php -c /etc/php7/cli/php.ini /some-path/exec.php
?