Я пытаюсь установить большое значение в конфигурации пула в php-fpm, но в какой-то момент он просто больше не запускается.
php_admin_value[disable_functions] = dl,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,pcntl_exec,include,include_once,require,require_once,posix_mkfifo,posix_getlogin,posix_ttyname,getenv,get_current_use,proc_get_status,get_cfg_va,disk_free_space,disk_total_space,diskfreespace,getcwd,getlastmo,getmygid,getmyinode,getmypid,getmyuid,ini_set,mail,proc_nice,proc_terminate,proc_close,pfsockopen,fsockopen,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,fopen,tmpfile,bzopen,gzopen,chgrp,chmod,chown,copy,file_put_contents,lchgrp,lchown,link,mkdi,move_uploaded_file,rename,rmdi,symlink,tempnam,touch,unlink,iptcembed,ftp_get,ftp_nb_get,file_exists,file_get_contents,file,fileatime,filectime,filegroup,fileinode,filemtime,fileowne,fileperms,filesize,filetype,glob,is_di,is_executable,is_file,is_link,is_readable,is_uploaded_file,is_writable,is_writeable,linkinfo,lstat,parse_ini_file,pathinfo,readfile,readlink,realpath,stat,gzfile,create_function
При попытке перезапустить php-fpm появляется следующее сообщение:
Stopping php-fpm: [ OK ]
Starting php-fpm: [20-Oct-2013 22:31:52] ERROR: [/etc/php-fpm.d/codepad.conf:235] value is NULL for a ZEND_INI_PARSER_ENTRY
[20-Oct-2013 22:31:52] ERROR: Unable to include /etc/php-fpm.d/codepad.conf from /etc/php-fpm.conf at line 235
[20-Oct-2013 22:31:52] ERROR: failed to load configuration file '/etc/php-fpm.conf'
[20-Oct-2013 22:31:52] ERROR: FPM initialization failed
[FAILED]
Когда удаляю последнюю отключенную функцию (create_function
) он начинается снова. Я также пробовал использовать другие функции, но это дает ту же ошибку, поэтому это не связано с create_function
функция.
Строка в настоящее время имеет размер чуть более 1 КБ, поэтому похоже, что я достиг здесь предела?
Верно ли мое предположение? Есть ли способ преодолеть этот предел?
Я тоже пробовал добавить еще php_admin_value[disable_functions]
под ним (надеясь, что он будет добавлен), но это не сработало (он просто использовал первый).
Это ошибка php-fpm.
В цикле чтения ini жестко задана максимальная длина строки в 1024 символа, которую можно увидеть здесь:
http://lxr.php.net/xref/PHP_5_5/sapi/fpm/fpm/fpm_conf.c#1495
Так что на данный момент вам не повезло, потому что буфер является sizeof(char) * (1024+1)
байтов, и он ищет новую строку как терминатор, вы ничего не можете сделать, чтобы заставить его понять директиву конфигурации длиннее этой.
Я сообщил об ошибке и планируйте решить эту проблему в ближайшие несколько дней.
Редактировать: Я сейчас создал PR с исправлением этой ошибки.