debian + php-fpm + chroot + mail()

Столкнулся с проблемой что перестала работать функция mail() в PHP когда я настроил chroot.
Мучался довольно долго, хотя решается все очень просто.
Предположим что chroot у Вас там-же где и у меня: /var/www

Нашел в сети несколько решений. Обычное — это установить mini_sendmail.

wget http://www.acme.com/software/mini_sendmail/mini_sendmail-1.3.6.tar.gz
tar -zxvf mini_sendmail-1.3.6.tar.gz
cd mini_sendmail-1.3.6

далее для того чтобы упростить себе жизнь меняем одну строчку в mini_sendmail.c:

username=getlogin();

заменяем на:

username=www;

где www это пользователь от которого запускаются скрипты. Если этого не делать то надо будет в chroot добавить все что нужно для определения пользователя — файлы пароля итд.

make
mkdir -p /var/www/usr/sbin
cp mini_sendmail /webroot/usr/sbin/sendmail

в php.ini должно быть (по умолчанию оно так и есть):

sendmail_path=/usr/sbin/sendmail -t -i

если было не так, не забываем перезапустить php-fpm.

И последнее, из-за чего у меня лично и не работало.
Нужно установить в chroot оболочку:
apt-get install bash-static
mkdir -p /var/www/bin
cp /bin/bash-static /var/www/bin/sh

После этого все волшебным образом все начинает работать.

This entry was posted in Uncategorized. Bookmark the permalink.

Добавить комментарий