Existe um limite para definir um php_admin_value no php-fpm?

5

Estou tentando definir um grande valor na configuração de um pool no php-fpm, mas em algum momento ele não inicia mais.

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

Ao tentar reiniciar o php-fpm ele falha com a seguinte mensagem:

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]

Quando eu removo a última função desabilitada ( create_function ), ela começa novamente. Eu também tentei com outras funções, mas isso dá o mesmo erro, então não está relacionado à função create_function .

A string atualmente tem pouco mais de 1KB de tamanho, então parece que eu atingi um limite aqui?

Minha suposição é correta? Existe uma maneira de superar esse limite?

Eu também tentei adicionar outro php_admin_value[disable_functions] abaixo dele (esperando que fosse acrescentado), mas isso não funcionou (ele apenas usou o primeiro).

    
por PeeHaa 20.10.2013 / 22:45

1 resposta

5

Este é um bug do php-fpm.

Há um limite de comprimento de linha de 1024 caracteres codificados no ciclo de leitura ini, que pode ser visto aqui:

link

Então, no momento, você está meio sem sorte - porque o buffer de leitura é sizeof(char) * (1024+1) bytes e procura uma nova linha como terminador, não há nada que você possa fazer para fazer entender uma diretiva de configuração mais longa que isso.

Eu relatei um bug e planejo dar uma olhada em como resolvê-lo nos próximos dias.

Edit: Eu criei um PR com uma correção para este bug.

    
por 20.10.2013 / 23:57