Recarregar o php-fpm interrompe conexões ativas, como a sua, nesta circunstância. Quando possível, você deve evitar fazê-lo ou, se não puder, fazê-lo de forma assíncrona, depois de concluir o envio dos dados para o navegador.
Estou criando um serviço gratuito de hospedagem compartilhada para diversão e aprendizado. Eu fiz um formulário simples, onde o usuário insere o subdomínio e a senha do ftp. Quando o usuário acessa o envio, um script gera um usuário linux, criptografa a senha digitada com crypt () e envia os dados para um script linux. Aqui está a parte errada do roteiro completo:
echo "[$1]
user = $1
group = $1
listen = /var/run/sock_$1.sock
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
php_value[disable_functions] = \"phpinfo, system, exec, shell_exec, passthru , ini_alter, dl, pfsockopen, openlog, syslog, readlink, symlink, link, leak, fsockopen, popen, escapeshellcmd, apache_child_terminate apache_get_modules, apache_get_version, apache_getenv, apache_note,apache_setenv,virtual\"
php_value[open_basedir] = \"/home/$1:/home/$1/tmp\"" | sudo /usr/bin/tee /etc/php5/fpm/pool.d/$1.conf;
sudo /usr/sbin/service php5-fpm reload;
Como você pode ver, ele cria um pool PHP-FPM e recarrega o serviço. Quando eu manualmente criar o pool e também recarregar manualmente o FPM, ele funciona bem, o novo site carrega sem nenhum problema. O problema que eu notei se eu comentar a linha de recarga cria o conjunto para que não haja problemas com a gravação de arquivos, mas com o recarregamento.
Então, quando eu envio a postagem com todos os dados, ela tem erro interno de servidor 500.
Log do Apache:
[Thu Aug 08 01:43:44 2013] [error] [client xxx.xxx.xxx.xxx] (104)Connection reset by peer: FastCGI: comm with server "/vhost_asd_tld" aborted: read failed, referer: http://asd.tld/
[Thu Aug 08 01:43:44 2013] [error] [client xxx.xxx.xxx.xxx] FastCGI: incomplete headers (0 bytes) received from server "/vhost_asd_tld", referer: http://asd.tld/
O conjunto asd.tld:
[asd_tld]
user = asd_tld
group = asd_tld
listen = /var/run/sock_asd_tld.sock
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
O asd.tld vhost:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName asd.tld
DocumentRoot /var/www
<Directory /var/www>
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
ErrorLog "/var/www/log/asd.tld-error.log"
CustomLog "/var/www/log/asd.tld-access.log" combined
CustomLog "/var/www/log/asd.tld-bandwidth.log" common
<IfModule mod_fastcgi.c>
<FilesMatch \.php$>
SetHandler php-script
</FilesMatch>
Action php-script /php5-fpm-handler
Alias /php5-fpm-handler /vhost_asd_tld
FastCGIExternalServer /vhost_asd_tld -socket /var/run/sock_asd_tld.sock
</IfModule>
</VirtualHost>
SO: Ubuntu Desktop 13.04
Alguma ideia? Obrigado antecipadamente!
Tags apache-2.2 php-fpm