PHP mail () ошибка 500 - PullRequest
       0

PHP mail () ошибка 500

1 голос
/ 12 марта 2012

В рамках процесса регистрации на сайте я добавил подтверждение по электронной почте.Но по какой-то причине функция mail выдает туда внутреннюю ошибку сервера.

Странно то, что если я создаю тестовый скрипт с точно таким же адресом электронной почты (с теми же параметрами), он работает нормально, иотправляет электронное письмо.

В случае, если это помогает, письмо отправляется из функции класса.Я не опубликовал код, потому что он на самом деле не актуален, даже если я попытаюсь mail('email@email.com','subject','email');, он потерпит неудачу с ошибкой 500!

Журналы ошибок сервера вообще ничего не показывают, все знают, чтоможет вызвать такую ​​проблему?

Технология:

Сервер работает php через mod_fastcgi, хотя эта проблема также происходит, если я переключаюсь на mod_suphp.

Обновления:

ОБНОВЛЕНИЕ: Я попытаюсь объяснить это лучше, функция почты прекрасно работает, если вызывается из другого файла с теми же параметрами.Проблема в том, что в сочетании с функцией mail возникает ошибка 500. Остальная часть файла, где он вызывается, тоже подойдет, если я прокомментирую функцию mail, все работает.Он вызывается AJAX-запросом к файлу, который вызывает функцию, в которую отправляется почта (на всякий случай, если это поможет)

ОБНОВЛЕНИЕ 2: В ответ на полученные ответы я получил больше информациине делиться ранее: ОС: CentOS выпуск 5.8 Когда я говорю об ошибке 500, я имею в виду, что сервер возвращает только код состояния HTTP 500.Сервер ничего не показывает ни в одном журнале ошибок. Самое главное, что если я создаю файл с именем test.php, только с mail('address@domain.com','Subject','Message'), он работает просто отлично.При вызове из этого другого файла возвращается 500 кодов состояния.Я спрашиваю, знает ли кто-нибудь, возможно, из опыта, что может быть причиной этого.

ОБНОВЛЕНИЕ 3: У кого-то вчера была такая же проблема: Функция PHP mail () вызывает только 500 внутренних ошибок серверапосле определенного пункта в коде

ОБНОВЛЕНИЕ 4 : После некоторого тестирования я обнаружил, что код 500 stats возвращается только тогда, когда скрипт вызывается через AJAX.Если я создаю файл с именем test.php и просто помещаю функцию mail и проверяю ее, она работает.Звонить через AJAX нет, есть идеи?

Ответы [ 3 ]

1 голос
/ 12 марта 2012

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

Ошибка: 500 являются ошибками сервера интервалов и могут иметь более чем одну причину.

  • Неправильный скрипт php cgi
  • Недопустимая директива в .htaccess или другом файле конфигурации
  • Ограничение, налагаемое файловой системой и серверным программным обеспечением. Может быть, вы прикрепляете файл для отправки
  • Пропущенные разрывы строк (\ r \ n) в заголовках

Попробуйте все решения, перечисленные в этом Форумы cPanel

1 голос
/ 12 марта 2012

Ваш вопрос очень запутан.

Вы не сказали, в какой операционной системе вы работаете, и не предоставили подробные сведения о конфигурации: в MSWindows функция mail php действует как SMTP-клиент. В ОС POSIX (включая Linux) он выполняет командную программу для отправки электронной почты. Клиент SMTP должен знать сервер и порт для подключения. Функция POSIX нуждается в конфигурации, чтобы сообщить ей, какую программу запустить.

Вы продолжаете ссылаться на ошибку 500. Вы имеете в виду код состояния HTTP 500 в браузере?

Что показывает журнал для почтовой программы / сервера? Если это платформа posix, попробуйте изменить php.ini для запуска сценария оболочки для регистрации действий и параметров.

0 голосов
/ 17 марта 2012

После нескольких часов тестирования я обнаружил проблему! Я использовал window.location для перенаправления пользователя на новую страницу после завершения вызова AJAX в его функции обратного вызова.

По-видимому, если вы измените его после вызова AJAX php-скрипта, который использует функцию mail(), сервер вернет 500 код состояния в запросе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...