在 php-fpm 中设置 php_admin_value 是否有限制?

Pee*_*Haa 5 configuration php-fpm

我试图在 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
Run Code Online (Sandbox Code Playgroud)

尝试重新启动 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]
Run Code Online (Sandbox Code Playgroud)

当我删除最后一个禁用的功能 ( create_function) 时,它会再次启动。我也尝试过其他函数,但这给出了同样的错误,所以它与create_function函数无关。

该字符串目前的大小刚刚超过 1KB,所以看起来我在这里达到了限制?

我的假设正确吗?有没有办法克服这个限制?

我还尝试php_admin_value[disable_functions]在它下面添加另一个(希望它会被附加),但这不起作用(它只使用了第一个)。

Dav*_*dom 5

这是一个 php-fpm 错误。

ini读取周期有硬编码的1024字符行长度限制,可以看这里:

http://lxr.php.net/xref/PHP_5_5/sapi/fpm/fpm/fpm_conf.c#1495

所以目前,你有点不走运 - 因为读取缓冲区sizeof(char) * (1024+1)字节并且它寻找一个换行符作为终止符,你无法做任何事情来让它理解比这更长的配置指令。

我已经报告了一个错误,并计划在接下来的几天内解决它。

编辑:我现在已经创建了一个PR,并修复了这个错误。