URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 5617
[ Назад ]

Исходное сообщение
"Не уходит почта из скриптов php-fastcgi в chroot"

Отправлено alexxwiz , 13-Мрт-08 17:51 
ОС: FreeBSD 6.3
веб-сервер: lighttpd в chroot
php: FastCGI, v5.2.5
sendmail: mini_sendmail из портов, собранный STATIC

Все необходимые библиотеки находятся в chroot, все модули php работают.
Почта исправно уходит сразу после запуска FastCGI-child процесса, но через 20-30 минут перестает.

Подскажите - куда копать?


Содержание

Сообщения в этом обсуждении
"Не уходит почта из скриптов php-fastcgi в chroot"
Отправлено alexxwiz , 13-Мрт-08 19:44 
>ОС: FreeBSD 6.3
>веб-сервер: lighttpd в chroot
>php: FastCGI, v5.2.5
>sendmail: mini_sendmail из портов, собранный STATIC
>
>Все необходимые библиотеки находятся в chroot, все модули php работают.
>Почта исправно уходит сразу после запуска FastCGI-child процесса, но через 20-30 минут
>перестает.
>
>Подскажите - куда копать?

Пример конфига:

fastcgi.server = ( ".php" =>
                  ( "localhost" =>
                   ("socket" => "/var/run/some.ru-php-fastcgi.socket",
                    "bin-path" => "/usr/local/bin/php-cgi",
                    "bin-environment" => (
                     "PHP_FCGI_CHILDREN" => "0",
                     "PHP_FCGI_MAX_REQUESTS" => "10000" ),
                     "bin-copy-environment" => (
                      "PATH", "SHELL", "USER" ),
                      "broken-scriptfilename" => "enable",
                      "max-procs" => 1
                     )
                    )
                   )

Пробовал менять max-procs и PHP_FCGI_CHILDREN - в пределах от 1 до 10 - не помогает.


"Не уходит почта из скриптов php-fastcgi в chroot"
Отправлено angra , 15-Мрт-08 22:12 
Как именно перестает? Функция mail (или что вы там используете в php) выдает ошибку (если да то какую) или письма в очереди sendmail накапливаются?

"Не уходит почта из скриптов php-fastcgi в chroot"
Отправлено alexxwiz , 16-Мрт-08 20:00 
>Как именно перестает? Функция mail (или что вы там используете в php)
>выдает ошибку (если да то какую) или письма в очереди sendmail
>накапливаются?

Функция mail() выдает FALSE, т.е. ошибка, но номер не возвращается. Письма в очередь даже не попадают - иначе бы отправились.

Такое ощущение, что sendmail не запускается, как будто кончаются какие-то ресурсы у fastcgi-сервера.


"Не уходит почта из скриптов php-fastcgi в chroot"
Отправлено angra , 17-Мрт-08 03:22 
Сделайте отдельный скрипт или добавьте параметр в существующий, который будет запускать через system /usr/sbin/sendmail и выводить в браузер результат или ошибку.
Также можно посмотреть на альтернативный вариант - отправку через smtp сессию, в php есть для этого набор функций.

"Не уходит почта из скриптов php-fastcgi в chroot"
Отправлено alexxwiz , 17-Мрт-08 11:51 
>Сделайте отдельный скрипт или добавьте параметр в существующий, который будет запускать через
>system /usr/sbin/sendmail и выводить в браузер результат или ошибку.
>Также можно посмотреть на альтернативный вариант - отправку через smtp сессию, в
>php есть для этого набор функций.

Возвращаемый код ошибки - 2, никаких строковых значений не возвращается. Сразу после перезапуска lighttpd - все работает, код ошибки тем же скриптом - 0.

Альтернативный вариант не подходит, потому что на сервере по этому же шаблону (lighttpd в chroot) работает несколько десятков сайтов клиентов, т.е. это что-то вроде shared hosting. Заставить клиентов переходить на PHPMailer - нереальная задача, почти все используют только mail().


"Не уходит почта из скриптов php-fastcgi в chroot"
Отправлено alexxwiz , 21-Мрт-08 11:13 
>[оверквотинг удален]
>>php есть для этого набор функций.
>
>Возвращаемый код ошибки - 2, никаких строковых значений не возвращается. Сразу после
>перезапуска lighttpd - все работает, код ошибки тем же скриптом -
>0.
>
>Альтернативный вариант не подходит, потому что на сервере по этому же шаблону
>(lighttpd в chroot) работает несколько десятков сайтов клиентов, т.е. это что-то
>вроде shared hosting. Заставить клиентов переходить на PHPMailer - нереальная задача,
>почти все используют только mail().

Вот пример скрипта которым тестируется отправка:

<?
$retv = system('echo "To: some@mail.com" | /usr/local/bin/sendmail -s127.0.0.1 -t', $rv);
print_r($retv);
print_r($rv);
?>

Код ошибки - 2 - что это за ошибка, подскажите - не могу найти расшифровку.
Если это "сигнал", то в соответствии с sys/signal.h:
#define SIGINT          2       /* interrupt */
но прерывания-то никто не посылал.