Сначала несколько информации:
mail()
. Для всех моих других проектов я уже использую SMTP-рассылку. Я выделил проблему тайм-аута сайта функции PHP mail()
. Это единственная строка кода в файле test.php на моем сервере:
<?php mail('rudolf@geardev.de', 'test', 'test');
Кажется, что он длится бесконечно и затем заканчивается mod_cgi через 40 секунд. Команда
php -r "mail('rudolf@geardev.de', 'test', 'test');"
в командной строке мгновенно отправляет электронное письмо.
Скажите, какие файлы журналов вы хотите увидеть, это Apache:
[Thu Jan 17 12:17:00 2013] [warn] [client 178.15.148.43] mod_fcgid: read data timeout in 40 seconds [Thu Jan 17 12:17:00 2013] [error] [client 178.15.148.43] Premature end of script headers: test.php
Я думаю, проблема в том, что я случайно запустил chmod -R 775
в корневом каталоге несколько дней назад. Я уже исправил все ошибки, кроме этого.
Скорее всего, вы используете 2 разных версии php.ini. один для cli и один для cgi. Я считаю, что у Debian есть такая настройка.
Убедитесь, что ваши версии cli и cgi имеют одну и ту же конфигурацию электронной почты, и она будет работать.
Ключ конфигурации почты: [функция почты]
Другая возможность заключается в том, что у вашего веб-пользователя нет доступа к выполнению sendmail.
Также проверьте разрешения на спулы (обновленные)
Не полагайтесь на mail()
поскольку она ненадежна и приводит к таким же проблемам. Я довольно долго использовал phpMailer .
Если вы сохраняете mail()
проверьте свои настройки в php.ini (см. http://www.quackit.com/php/tutorial/php_mail_configuration.cfm ). Обратите внимание: обычно CLI имеет другой php.ini, чем FastCGI.
Некоторые более распространенные проблемы:
У FastCGI нет разрешений на использование sendmail
Предел памяти с большими вложениями
Возможно ли, что у вас есть брандмауэр, блокирующий исходящие SMTP-соединения? Есть ли другие вещи на этом сервере, которые могут успешно отправлять электронную почту?
Я бы сделал это замечанием, но мне пока не разрешено.
Я искал эту конкретную ошибку и обнаружил, что это может быть вызвано множеством вещей. Я не знаю, что вы уже пытались сделать, чтобы исправить это, но вот несколько советов относительно того, что может помочь:
<?php
и заканчивайте на ?>
Здесь также есть еще один вопрос по этому вопросу: SO Mail: функция Mail вызывает ошибку . Владелец заявил, что смена сервера с той же настройкой привела к созданию рабочей функции mail (), что может указывать на проблему с хостом.
У вас есть проблема с использованием:
exec('php -r \"mail('rudolf@geardev.de', 'test', 'test');\"');