PHP не может отправлять mail () в chroot, хотя я могу использовать sendmail внутри chroot

Я создаю chroot php-fpm, и нахожусь на одном из последних шагов, прежде чем назвать это успешным.

Chroot php-fpm работает как шарм. Кроме того, я установил mini_sendmail в chroot (вместо стандартного sendmail) и могу подтвердить, что он может отправлять электронную почту:

[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 -fme@site1.com me@my-email.com

Я получаю электронное письмо, когда запускается указанная выше команда .

Однако, когда я открываю следующий php-скрипт из веб-браузера, электронное письмо не отправляется:

<?php
    $message = "This is a test";
    $headers = 'From: me@site1.com';
    mail("me@my-email.com", "Test", $message, $headers);
    echo "mail sent";
?>

Ниже приведен мой файл конфигурации пула chroot 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

Когда я открываю php-файл из веб-браузера , Я могу подтвердить, что в почтовом журнале есть запись в соответствии с php_admin_value [mail.log] :

mail() on [/www/mailer.php:4]: To: me@my-email.com -- Headers: From: me@site1.com

Однако в почтовом журнале сервера (за пределами chroot) ничего не отображается, и ничего отображается в журнале ошибок php.

Как я могу завершить устранение неполадок на этом последнем шаге, чтобы функция php mail () работала должным образом в моем chroot php-fpm? Или как я могу исправить настоящая проблема?

4
задан 16 August 2018 в 18:34
1 ответ

Я знаю, что это довольно старый вопрос, но я обнаружил, что это один из хитов, пытаясь решить ту же проблему, и поэтому, если кто-то столкнется с этим в будущем, есть еще одна вещь, которую нужно проверить. В моем случае я отсутствовал /bin/sh в среде chroot.

php передает sendmail_path в popen. popen передает команду в /bin/sh, поэтому, если в вашей среде chroot отсутствует /bin/sh, вы, похоже, получите сообщение об ошибке без регистрации

1
ответ дан 15 September 2020 в 09:07

Теги

Похожие вопросы