memory_limit возвращает разные значения в php5-cli и браузере

Я пишу скрипт, который требует, чтобы я получил всю конфигурацию php. Но я сталкиваюсь с проблемой и несоответствиями, когда запускаю ini_get_all() в браузере и использую php5-cli. Вот мой фрагмент кода:

$confiq = ini_get_all();
echo $config['memory_limit']['local_value'];

Он возвращает 128M, когда я запускаю с помощью браузеров, но возвращает -1, когда я запускаю с помощью php5-cli из командной строки.

РЕДАКТИРОВАТЬ: оказалось, что они используют два разных файла php.ini. Я проверил cli .ini командой php --ini. Теперь мне нужно выяснить, как изменить местоположение файла .ini для cli.

РЕДАКТИРОВАТЬ: Для простого взлома я создал символические ссылки на apache2 php.ini, чтобы убедиться, что оба используют один и тот же php.ini.


person geckob    schedule 21.12.2015    source источник
comment
проверьте, используют ли оба один и тот же файл ini   -  person bansi    schedule 21.12.2015
comment
самый легкий. просто удалите (создайте резервную копию) cli ini и поместите символическую ссылку на требуемый ini.   -  person bansi    schedule 21.12.2015
comment
@банси: Да. Я верю, что так оно и будет работать. Не уверен, что это лучшая практика или нет. Не совсем знаком с php.   -  person geckob    schedule 21.12.2015
comment
не уверен, почему вы хотите этого. вы также можете использовать CURL для получения реального URL-адреса PHP в вашем скрипте. таким образом вы можете вообще избежать cli   -  person bansi    schedule 21.12.2015
comment
@bansi: Сейчас я проверяю, что мои два сервера имеют одинаковую конфигурацию. Итак, прямо сейчас я написал скрипт, который CURL-обработает мой другой сервер и получит мою текущую конфигурацию, используя вызов функции с CLI.   -  person geckob    schedule 21.12.2015
comment
тогда вы также можете CURL на локальный сервер вместо cli, я бы посоветовал, потому что это то, что будет использовать точная конфигурация вашего веб-сервера.   -  person bansi    schedule 21.12.2015
comment
Да. Я отказался от возможности синхронизировать кли и апач. Это то, что я сделал сейчас.   -  person geckob    schedule 21.12.2015


Ответы (1)


Есть два разных файла php.ini.

/etc/php5/apache2/php.ini для Интернета и /etc/php5/cli/php.ini для командной строки.

Вам необходимо отредактировать соответствующий ini-файл в соответствии с контекстом. Если вам нужно одинаковое значение ini как в cli, так и в Интернете, очевидно, вам нужно отредактировать оба. Также не забудьте перезапустить apache (service apache2 restart) после редактирования ini-файлов, чтобы увидеть изменения.

person Harikrishnan    schedule 21.12.2015
comment
я думаю, что Systemd взял на себя SysVinit +1 за решение этой реальной проблемы - person bansi; 21.12.2015