Intereting Posts
Преобразование динамического PHP / mySQL-сайта в архивную версию HTML? Файлы PHP отправляют только «parsererror» через AJAX окончательное исключение дает ошибку php Использование файлов YAML в качестве поставщика данных в PHPUnit (CIUnit) Запуск Linux Command из PHP Laravel Production issue – Обновление композитора с Laravel 4.1.x Проверка Symfony2 с использованием аннотации Assert не работает Звездный рейтинг, реализующий интервал оценки Уилсона MediaWiki использует файлы cookie для входа в систему. У вас отключены файлы cookie. Включите их и повторите попытку. Метод PHP для динамического получения значений из свойства объекта массива Получение необработанной строки запроса SQL из подготовленных операторов PDO Публикация журнала подачи для других пользователей отключена для этого приложения Внедрение PDF-файла на веб-страницу без использования встроенного средства просмотра PDF Неустранимая ошибка: вызов неопределенной функции mysql_connect () в C: \ Apache \ htdocs \ test.php в строке 2 Perl-эквивалент preg_callback PHP

Время ожидания PHP mail ()

Сначала несколько информации:

  • Debian Squeeze
  • PHP 5.3.3
  • PHP с mod_cgi
  • В этом случае я должен использовать 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 есть такая настройка.

  • /etc/php5/cgi/php.ini
  • /etc/php5/cli/php.ini

Убедитесь, что ваши версии 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 и заканчивайте на ?>
  • Удостоверьтесь, что chmod файл для 755
  • Попробуйте включить вывод какого-либо типа (например, напечатать «Отправленная почта».)

Здесь также есть еще один вопрос по этому вопросу: SO Mail: функция Mail вызывает ошибку . Владелец заявил, что смена сервера с той же настройкой привела к созданию рабочей функции mail (), что может указывать на проблему с хостом.

У вас есть проблема с использованием:

 exec('php -r \"mail('rudolf@geardev.de', 'test', 'test');\"');