Один из индексных дескрипторов моей машины Debian недавно заполнился, и виновником оказался /var/lib/php5/sessions
, в котором накопилось 2,5 миллиона временных файлов сеанса, хотя предполагается, что его нужно очищать всякий раз, когда файлы старше 24 минут.
Debian использует встроенную в PHP сборку мусора и вместо этого использует программу под названием /usr/lib/php5/sessionclean
делать эту работу. Моя версия датирована 8 февраля, она должна быть последней версией Debian Jessie. Выходил тихо, но, насколько я могу судить, ничего не делал.
Я просматривал код и нашел такую строку:
session_config=$(PHP_INI_SCAN_DIR=/etc/php5/${conf_dir}/conf.d/ php5 -c /etc/php5/${conf_dir}/php.ini -d "error_reporting='~E_ALL'" -r 'foreach(ini_get_all("session") as $k => $v) echo "$k=".$v["local_value"]."\n";')
Похоже, что это одинаково на нескольких машинах, на которых установлена новейшая Jessie.
Насколько я могу судить, это не работает и никогда не сработает, потому что он пытается запустить /etc/php5/apache2/conf.d/ php5
вместо того /etc/php5/apache2/conf.d/php5
. Но даже собирая все это вместе, я продолжал получать ошибки, на этот раз по поводу опции «-c».
Есть идеи о том, как сделать эту работу правильной и почему готовый debian дает сбой?
Пространство в /etc/php5/apache2/conf.d/ php5
правильно ( php5
двоичный файл не находится в каталоге конфигурации!).
В моем случае некоторые строки конфигурации в моем php.ini больше не поддерживаются, из-за чего сценарий sessionclean не может читать php.ini.
Проверьте свою конфигурацию с помощью этой команды.
php -e -c /etc/php5/apache2/php.ini -d display_errors=on -r 'echo "OK\n";';
Я получил следующее предупреждение
Fatal error: Directive 'magic_quotes_gpc' is no longer available in PHP in Unknown on line 0
Удалите эти недопустимые значения из своей конфигурации, и теперь сценарий sessionclean может читать ваш файл конфигурации.