Je crée un service d'hébergement partagé gratuit pour le plaisir et l'apprentissage. J'ai fait un formulaire simple où l'utilisateur entre le sous-domaine et le mot de passe ftp. Lorsque l'utilisateur appuie sur soumettre, un script génère un utilisateur linux, crypte le mot de passe saisi avec crypt() puis envoie les données à un script linux. Voici la mauvaise partie du script complet :
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;
Comme vous pouvez le voir, il crée un pool PHP-FPM puis recharge le service. Lorsque je crée manuellement le pool et que je recharge manuellement FPM, cela fonctionne bien, le nouveau site web se charge sans problème. Le problème que j'ai remarqué est que si je commente la ligne de rechargement, le pool est créé et il n'y a pas de problème d'écriture de fichier mais de rechargement.
Ainsi, lorsque je soumets le message avec toutes les données, il y a une erreur de serveur interne 500.
Journal d'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/
Le pool 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
Le serveur virtuel asd.tld :
<VirtualHost *:80>
ServerAdmin asd@asd.tld
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>
Système d'exploitation : Ubuntu Desktop 13.04
Des idées ? Merci d'avance !