Estou criando um chroot do php-fpm e estou em um dos meus últimos passos antes de chamar isso de sucesso.
O chroot do php-fpm está funcionando como um encanto. Além disso, eu tenho o mini_sendmail instalado no chroot (no lugar do sendmail) e posso confirmar que ele pode enviar e-mail:
[root@hostname site1.com]# ls bin/
bash cat sendmail test.txt
[root@hostname site1.com]# chroot .
bash-4.2# cat /bin/test.txt | ./bin/sendmail -t -i [email protected] [email protected]
Eu recebo o email quando o comando acima é executado.
No entanto, quando eu acesso o seguinte script php de um navegador da web, nenhum email é enviado:
<?php
$message = "This is a test";
$headers = 'From: [email protected]';
mail("[email protected]", "Test", $message, $headers);
echo "mail sent";
?>
Abaixo está meu arquivo de configuração do pool chroot do php-fpm:
[site1.com]
user = user1
group = user1
listen = 127.0.0.1:9001
listen.owner = user1
listen.group = user1
php_admin_value[disable_functions] = exec,passthru,shell_exec,system
php_admin_flag[allow_url_fopen] = on
php_flag[display_errors] = on
php_admin_value[short_open_tag] = On
php_admin_value[doc_root] = www
php_admin_value[error_log] = /logs/php-errors
php_admin_flag[log_errors] = on
php_admin_value[sendmail_path] = /bin/sendmail
php_admin_value[mail.log] = /logs/maillog
php_admin_value[error_reporting] = E_ALL
pm = ondemand
pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chroot = /home/www/site1.com
chdir = /www
catch_workers_output = yes
Quando eu acesso o arquivo php de um navegador da web, posso confirmar que há uma entrada de log no maillog, conforme definido pelo php_admin_value[mail.log]
:
mail() on [/www/mailer.php:4]: To: [email protected] -- Headers: From: [email protected]
No entanto, nada aparece no maillog do servidor (fora do chroot), e nada aparece no log de erros do php.
Como posso terminar de solucionar esta última etapa de fazer com que a função mail()
do php funcione conforme desejado no meu chroot do php-fpm? Ou, como posso corrigir o problema real?