I’m trying to send an email using the following code and I’m getting Internal Server Error. I am not sure why I am having this trouble.
PHP code:
<?php
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 0; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->Username = 'myemail@gmail.com';
$mail->Password = "mypasswordhere";
$mail->SetFrom($from, $from_name);
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AddAddress('myemail@gmail.com');
if(!$mail->Send()) {
$error = 'Mail error: '.$mail->ErrorInfo;
return false;
} else {
$error = 'Message sent!';
return true;
}
?>
I just placed this file as test.php inside the PhpMail folder after extracting it. Like the below
Looks like you’re dealing with bunch of issues and here is a checklist: you’re having issues with ssl, the actual mail software and credentials. It became an issue of 3 from one main issue and I’m guessing you don’t either have your credentials typed in correctly or your open ssl isn’t setup and you’re also having issues using the mail software.
535 535 5.7.3 Authentication Unsuccessful means auth is unsuccessful, check your credentials username and password.
550 error code, it means that the receiving system could not deliver your email to the user to whom it was addressed because the mailbox is unavailable.
There are plenty of other solutions to resolve your issue. Why don’t you try something more simple instead of using the autoload PHPMailerAutoload.php. Create a new file and place the code below, create a message body (test_message.html) and call it from the browser to test gmail smtp with the gmail credentials. This is a snippet from PHPMailer on how to use it with gmail smtp and it shouldn’t go wrong if you have everything filled in correctly.
<?php
require_once('../class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
$mail = new PHPMailer();
$body = file_get_contents('test_message.html');
$body = eregi_replace("[]",'',$body);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "mail.yourdomain.com"; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "tls"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 587; // set the SMTP port for the GMAIL server
$mail->Username = "yourusername@gmail.com"; // GMAIL username
$mail->Password = "yourpassword"; // GMAIL password
$mail->SetFrom('name@yourdomain.com', 'First Last');
$mail->AddReplyTo("name@yourdomain.com","First Last");
$mail->Subject = "PHPMailer Test Subject via smtp (Gmail), basic";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$address = "whoto@otherdomain.com";
$mail->AddAddress($address, "John Doe");
$mail->AddAttachment("images/phpmailer.gif"); // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
?>
If you’re getting user auth error, then your credentials aren’t typed in
correctly. If that’s not the issue, you’ll get an ssl error if you’re not using the right port.
If there are software issues with include, you should try something better.
I was debating this morning if I should should PHPMailer, ended up using Swiftmailer which worked right after I installed it with PHPComposer.
My Internal mail server is extremely picky and has ton of firewall settings and rules on hardware and software level and I was surprised it didn’t give me any problems; the emails were being sent right away without any problems on port 587.
require_once 'vendor/swiftmailer/swiftmailer/lib/swift_required.php';
$transport = Swift_SmtpTransport::newInstance('mail.hellog***.com', 587)
->setUsername('apache@hellog***.com')
->setPassword('apa******')
;
This is what you need for gmail:
$transporter = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
->setUsername($this->username)
->setPassword($this->password);
$this->mailer = Swift_Mailer::newInstance($transporter);
If none of what you like, you can try phpgmailer:
https://github.com/GregDracoulis/LectureBank/tree/master/phpgmailer
here is an example on how to use it:
http://www.vulgarisoverip.com/2006/10/13/update-send-email-with-php-and-gmail-hosted-for-your-domain/
this class is dedicated for gmail use.
If all your problems and issues relate to openSSL, you should follow the steps below:
1. Make sure the OpenSSL module DLL file is included in the PHP installation:
C:user>dir localphpextphp_openssl.dll
Directory of C:localphpext
php_openssl.dll
2. Create the PHP configuration file, localphpphp.ini, if it does not exist:
C:user>copy localphpphp.ini-production localphpphp.ini
1 file(s) copied.
3. Enable the OpenSSL module by editing the configuration file with a text editor. You need to remove the comment maker (;) on two configuration lines:
...
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "ext"
...
extension=php_openssl.dll
...
That’s it. You should be all set setting up openSSL on your Windows IIS WebServer. Follow these options and steps, it could be your issue.
Содержание
- Почему phpmailer выдает 500 оишбку в wordpress?
- PHPMailer загружается некоторое время, затем выдает 500 — Внутренняя ошибка сервера
- 8 ответов
- PHPMailer загружается некоторое время, затем выдает 500 — Внутренняя ошибка сервера
- 8 ответов
- PHPMailer загружает некоторое время, а затем дает 500 – ошибка внутреннего сервера
Почему phpmailer выдает 500 оишбку в wordpress?
У меня на wordpress сайте не работает форма обратной связи. Скажу честно форму полностью скопировал у ютубера «фрилансер по жизни xD». Форма выдает 500 ошибку. Вот код:
Я не правильно задаю путь к mail.php?
Я просто пробовал еще и другие варианты кода, они тоже не работают. Если делаю через js то перебрасывает на страницу 404, а если убрать js и сделать action=»» на mail.php то выдает 500 ошибку.
- Вопрос задан более года назад
- 72 просмотра
Средний 1 комментарий
Warning: require(/wp-content/themes/test/assets/mail/PHPMailer.php): failed to open stream: No such file or directory in /var/www/www-root/data/www/test-site.test.kz/wp-content/themes/kisc/mail.php on line 7
Fatal error: require(): Failed opening required ‘/wp-content/themes/test/assets/mail/PHPMailer.php’ (include_path=’.:/opt/php72/share/pear’) in /var/www/www-root/data/www/test-site.test.kz/wp-content/themes/test/mail.php on line 7
Выдает такую ошибку. Я так понимаю что путь не верный. Просто mail.php лежит в папке темы, так же и page.php лежит в папке темы( вёрстка формы и js в одном файле 🙂 )
понял ошибку. Путь был не верным. /var/www/www-root/data/www/test-site./var/www/www-root/data/www/test-site.test.kz/wp-content/themes/test/assets/mail/PHPMailer.php.kz вот такой путь должен был быть.
Появилась новая проблема) Не сохраняются файлы на этом моменте:
Источник
PHPMailer загружается некоторое время, затем выдает 500 — Внутренняя ошибка сервера
Я пытаюсь настроить страницу php для автоматической отправки электронного письма с подтверждением. Я хотел бы использовать серверы gmail smtp, и везде, где я смотрел, предлагается использовать PHPMailer. Я установил его и использовал следующий пример кода:
При попытке доступа к странице через Firefox страница будет загружаться в течение нескольких минут, а затем дать эту ошибку:
500 — Внутренняя ошибка сервера.
Существует проблема с ресурсом, который вы ищете, и его невозможно отобразить.
Сервер Windows Server 2008 R2 Стандартная работа IIS 7.5 и Версия PHP 5.5.8. Я могу получить доступ ко всем остальным страницам без проблем, но попытка вызвать $mail->Send() кажется таймаутом или чем-то еще. Я знаю это, потому что я прокомментировал каждую строку и медленно добавил фрагменты обратно, а $mail->Send() — это строка, которая вызывает поведение.
Мои возможности Google не позволяют мне здесь, так как я просто не могу понять, как это сделать. Любые идеи о том, что может быть неправильным?
Обновление
Я открыл журнал сервера, а затем снова попытался загрузить страницу, но никаких новых ошибок не было добавлено в журнал. Тем не менее, я заметил следующие ошибки с сегодняшнего дня в System32LogFileshttperr1.log
ОБНОВЛЕНИЕ 2
Я уверен, что данные моей учетной записи gmail верны и протестировали ее отправку с помощью Thunderbird на сервере. При попытке отправить без защищенных методов, как предложено в этом комментарии, я получаю эту ошибку:
Ошибка MAIL FROM, 550,5.7.3 Запрошенное действие отменено; пользователь не аутентифицирован
Моя версия PHP Mailer — 5.2.9, и теперь я также пробовал следующее:
- Использование \ в путях файлов вместо
- Без изменений
- Включая class.phpmailer.php вместо PHPMailerAutoload.php
- Fatal error: Class ‘SMTP’ not found in C:inetpubwwwrootinclPHPMailerclass.phpmailer.php on line 1195
- Использование ssl для порта 465
- SMTP connect() failed
- Отправка с адресом hotmail через порт 25 с помощью $mail->SMTPAuth = false;
- MAIL FROM command failed,550,5.7.3 Requested action aborted; user not authenticated
Обновление 3
После перезагрузки страницы проблемы я проверил средство просмотра событий и увидел новую запись в журналах Windows → Система:
Ошибка PHP: ошибка синтаксиса, неожиданный BOOL_TRUE в C:PHPphp.ini в строке 101
8 ответов
Похоже, вы имеете дело с кучей проблем, и вот контрольный список: у вас проблемы с ssl, фактическим почтовым программным обеспечением и учетными данными. Это стало проблемой 3 из одной основной проблемы, и я предполагаю, что у вас нет либо ваших учетных данных набрано правильно, либо ваш открытый ssl не настроен, и у вас также возникают проблемы с использованием почтового программного обеспечения.
535 535 5.7.3 Аутентификация Неудачная означает, что auth не увенчался успехом, проверьте свое имя пользователя и пароль.
550, это означает, что принимающая система не могла доставить вашу электронную почту пользователю, к которому он был адресован, потому что почтовый ящик недоступен.
Существует множество других решений для решения вашей проблемы. Почему бы вам не попробовать что-то более простое, а не использовать autoload PHPMailerAutoload.php. Создайте новый файл и поместите код ниже, создайте тело сообщения (test_message.html) и вызовите его из браузера, чтобы проверить gmail smtp с учетными данными gmail. Это фрагмент PHPMailer о том, как использовать его с gmail smtp, и он не должен ошибаться, если у вас все правильно заполнено.
Если вы получаете пользовательскую ошибку auth, то ваши учетные данные не вводятся в правильно. Если это не проблема, вы получите сообщение об ошибке ssl, если вы не используете правильный порт.
Если у вас есть проблемы с программным обеспечением, вы должны попробовать что-то лучше.
Я обсуждал это утро, если мне следовало бы PHPMailer, в итоге использовал Swiftmailer, который работал сразу после того, как я установил его с помощью PHPComposer.
Мой внутренний почтовый сервер очень разборчивый и имеет тонну настроек и правил брандмауэра на уровне аппаратного и программного обеспечения, и я был удивлен, что это не вызвало у меня никаких проблем; электронные письма сразу отправляются без проблем на порт 587.
Это то, что вам нужно для gmail:
этот класс предназначен для использования в Gmail.
Если все ваши проблемы и проблемы относятся к openSSL, вы должны выполнить следующие шаги:
1. Убедитесь, что DLL файл модуля OpenSSL включен в установку PHP:
2. Создайте файл конфигурации PHP, localphpphp.ini , если он не существует:
3. Включите модуль OpenSSL, отредактировав файл конфигурации с помощью текстового редактора. Вам нужно удалить создателя комментариев (;) на двух конфигурационных строках:
Вот оно. Вы должны настроить настройку openSSL на своем веб-сервере Windows IIS. Следуйте этим параметрам и шагам, это может быть ваша проблема.
Настройка и настройка IIS
Начните с сервера ServerManager на сервере. Чаще всего это сервер, на котором вы будете запускать свой php-сайт. Перейдите к разделу Добавление функций в раздел «Обзор функций». Проверьте службы SMTP в мастере добавления компонентов и нажмите «Установить». Теперь подождите завершения установки. Откройте диспетчер IIS6 (или IIS7) в разделе «Администрирование» → «Информационные службы Интернета» 6.0 в меню «Пуск», конфигурация SMTP использует консоль управления из IIS6. В разделе [SMTP Virtual Server] щелкните правой кнопкой мыши и выберите свойства из контекстного меню. Перейдите на вкладку «Доступ» и нажмите кнопку «Реле». Добавьте новую запись в список, нажав кнопку «Добавить» и введите 127.0.0.1 (или IP-адрес вашего веб-сервера) в поле ввода для одного компьютера. Дважды нажмите «Остановить», чтобы применить новые настройки.
Настройка Php
Чтобы отправлять электронную почту Php, вам нужно сделать некоторые настройки. В основном есть два варианта. Если вы только собираетесь использовать SMTP-сервер в одном проекте и не хотите, чтобы он вмешивался в другие проекты, вы можете настроить конфигурацию из своего php-кода, добавив следующие строки где-нибудь перед отправкой электронной почты:
Другим способом, чтобы глобальное использование этих параметров, добавьте следующие строки в файл php.ini.
Убедитесь, что вы перезагрузили сервер после внесения этих изменений, чтобы убедиться, что они загружены.
Источник
PHPMailer загружается некоторое время, затем выдает 500 — Внутренняя ошибка сервера
Я пытаюсь настроить страницу php для автоматической отправки подтверждающего электронного письма. Я хотел бы использовать SMTP-серверы Gmail, и везде, где я смотрел, предлагается использовать PHPMailer. Я установил его и использовал следующий пример кода:
При попытке получить доступ к странице через Firefox, страница будет загружаться в течение нескольких минут, а затем выдаст эту ошибку:
500 — внутренняя ошибка сервера.
Возникла проблема с ресурсом, который вы ищете, и он не может быть отображен.
Сервер является Windows Server 2008 R2 Standard с IIS 7.5 и PHP версии 5.5.8. Я могу получить доступ ко всем другим страницам без проблем, но пытаюсь позвонить $mail->Send() кажется, время ожидания или что-то. Я знаю это, потому что я прокомментировал каждую строку и медленно добавил кусочки обратно и $mail->Send() это линия, которая вызывает поведение.
Мои способности Google меня подводят, потому что я просто не могу понять, как заставить это работать. Есть идеи, что может быть не так?
Обновить
Я открыл журнал сервера, затем снова попытался загрузить страницу, но в журнал не было добавлено никаких новых ошибок. Тем не менее, я заметил следующие ошибки с сегодняшнего дня в System32LogFileshttperr1.log
ОБНОВЛЕНИЕ 2
Я уверен, что данные моей учетной записи gmail верны, и я проверил отправку с него с помощью Thunderbird на сервере. При попытке отправить без защищенных методов, как предлагается в этом комментарии, я получаю эту ошибку:
Ошибка команды MAIL FROM,550,5.7.3 Запрошенное действие прервано; пользователь не аутентифицирован
Моя версия PHP Mailer — 5.2.9, и я также попробовал следующее:
- С помощью \ в пути к файлам вместо
- Без изменений
- В том числе class.phpmailer.php вместо PHPMailerAutoload.php
- Fatal error: Class ‘SMTP’ not found in C:inetpubwwwrootinclPHPMailerclass.phpmailer.php on line 1195
- Использование SSL через порт 465
- SMTP connect() failed
- Отправка с адреса горячей почты через порт 25 с $mail->SMTPAuth = false;
- MAIL FROM command failed,550,5.7.3 Requested action aborted; user not authenticated
Обновление 3
После перезагрузки страницы проблемы, я проверил через Event Viewer и увидел новую запись в Windows Logs -> System:
Ошибка PHP: синтаксическая ошибка, неожиданный BOOL_TRUE в C:PHPphp.ini в строке 101
8 ответов
Похоже, вы имеете дело с кучей проблем, и вот контрольный список: у вас есть проблемы с ssl, реальным почтовым программным обеспечением и учетными данными. Это стало проблемой 3 из одной основной проблемы, и я предполагаю, что у вас либо неправильно введены ваши учетные данные, либо ваш open ssl не настроен, но у вас также возникают проблемы с использованием почтового программного обеспечения.
535 535 5.7.3 Аутентификация не удалась, значит аутентификация не удалась, проверьте свои учетные данные, имя пользователя и пароль.
Код ошибки 550 означает, что принимающая система не смогла доставить вашу электронную почту пользователю, которому она была адресована, поскольку почтовый ящик недоступен.
Есть много других решений для решения вашей проблемы. Почему бы вам не попробовать что-то более простое вместо использования автозагрузки PHPMailerAutoload.php. Создайте новый файл и поместите приведенный ниже код, создайте тело сообщения (test_message.html) и вызовите его из браузера, чтобы проверить gmail smtp с учетными данными gmail. Это фрагмент PHPMailer о том, как использовать его с gmail smtp, и он не должен ошибаться, если все правильно заполнено.
Если вы получаете ошибку аутентификации пользователя, то ваши учетные данные введены неправильно. Если это не проблема, вы получите ошибку ssl, если вы не используете правильный порт.
Если есть проблемы с программным обеспечением include, попробуйте что-нибудь получше.
Сегодня утром я обсуждал, стоит ли мне использовать PHPMailer, и в итоге я использовал Swiftmailer, который работал сразу после того, как я установил его с помощью PHPComposer.
Мой внутренний почтовый сервер очень требователен и имеет множество настроек и правил брандмауэра на аппаратном и программном уровне, и я был удивлен, что это не доставило мне никаких проблем; электронные письма отправлялись сразу же без проблем через порт 587.
Это то, что вам нужно для Gmail:
Если ничего из того, что вам нравится, вы можете попробовать phpgmailer: https://github.com/GregDracoulis/LectureBank/tree/master/phpgmailer
Этот класс предназначен для использования Gmail.
Если все ваши проблемы и проблемы связаны с openSSL, вам следует выполнить следующие шаги:
1. Убедитесь, что файл DLL модуля OpenSSL включен в установку PHP:
C: user> dir local php ext php_openssl.dll
Каталог C: local php ext
2. Создайте файл конфигурации PHP, localphpphp.ini если его не существует:
3. Включите модуль OpenSSL, отредактировав файл конфигурации с помощью текстового редактора. Вам необходимо удалить средство создания комментариев (;) в двух строках конфигурации:
Вот и все. Вы должны быть полностью настроены, настраивая openSSL на вашем Windows IIS WebServer. Следуйте этим параметрам и шагам, это может быть вашей проблемой.
Источник
PHPMailer загружает некоторое время, а затем дает 500 – ошибка внутреннего сервера
Я пытаюсь настроить php-страницу, чтобы автоматически отправлять электронное письмо с подтверждением. Я хотел бы использовать серверы gmail smtp, и везде, где я смотрел, предлагается использовать PHPMailer . Я установил его и использовал следующий пример кода:
При попытке доступа к странице через Firefox страница будет загружаться в течение нескольких минут, а затем дать эту ошибку:
500 – внутренняя ошибка сервера.
Существует проблема с ресурсом, который вы ищете, и его невозможно отобразить.
Сервер – это Windows Server 2008 R2 Standard, работающий под управлением IIS 7.5 и PHP версии 5.5.8 . Я могу получить доступ ко всем другим страницам без проблем, но попытка вызвать $mail->Send() кажется, что это время или что-то в этом роде. Я знаю это, потому что я прокомментировал каждую строку и медленно добавил фрагменты обратно, а $mail->Send() – это строка, которая вызывает поведение.
Мои возможности Google не позволяют мне здесь, так как я просто не могу понять, как это сделать. Любые идеи о том, что может быть неправильным?
Обновить
Я открыл журнал сервера, а затем снова попытался загрузить страницу, но никаких новых ошибок не было добавлено в журнал. Тем не менее, я заметил следующие ошибки с сегодняшнего дня в System32LogFileshttperr1.log
ОБНОВЛЕНИЕ 2
Я уверен, что данные моей учетной записи gmail верны и протестировали ее отправку с помощью Thunderbird на сервере. При попытке отправить без защищенных методов, как это предлагается в этом комментарии, я получаю эту ошибку:
MAIL FROM command failed, 550,5.7.3 Запрошенное действие отменено; пользователь не аутентифицирован
Моя версия PHP Mailer – 5.2.9, и теперь я также пробовал следующее:
- Использование \ в пути к файлу вместо
- Без изменений
- Включая class.phpmailer.php вместо PHPMailerAutoload.php
- Fatal error: Class ‘SMTP’ not found in C:inetpubwwwrootinclPHPMailerclass.phpmailer.php on line 1195
- Использование ssl для порта 465
- SMTP connect() failed
- Отправка с адресом hotmail через порт 25 с помощью $mail->SMTPAuth = false;
- MAIL FROM command failed,550,5.7.3 Requested action aborted; user not authenticated
Обновление 3
После перезагрузки страницы проблемы я проверил окно просмотра событий и увидел новую запись в журналах Windows -> Система:
Ошибка PHP: ошибка синтаксиса, неожиданный BOOL_TRUE в C: PHP php.ini в строке 101
Похоже, вы имеете дело с кучей проблем, и вот контрольный список: у вас проблемы с ssl, фактическим почтовым программным обеспечением и учетными данными. Это стало проблемой 3 из одной основной проблемы, и я предполагаю, что у вас нет либо ваших учетных данных набрано правильно, либо ваш открытый ssl не настроен, и у вас также возникают проблемы с использованием почтового программного обеспечения.
535 535 5.7.3 Аутентификация Неудачный означает, что auth не увенчался успехом, проверьте свое имя пользователя и пароль.
550, это означает, что принимающая система не могла доставить вашу электронную почту пользователю, к которому он был адресован, потому что почтовый ящик недоступен.
Существует множество других решений для решения вашей проблемы. Почему бы вам не попробовать что-то более простое, а не использовать автозагрузку PHPMailerAutoload.php . Создайте новый файл и поместите код ниже, создайте тело сообщения (test_message.html) и вызовите его из браузера, чтобы проверить gmail smtp с учетными данными gmail. Это фрагмент PHPMailer о том, как использовать его с gmail smtp, и он не должен ошибаться, если у вас все правильно заполнено.
Если вы получаете пользовательскую ошибку, то ваши учетные данные не введены правильно. Если это не проблема, вы получите сообщение об ошибке ssl, если вы не используете правильный порт.
Если у вас есть проблемы с программным обеспечением, вы должны попробовать что-то лучше.
Я обсуждал это утро, если мне следовало бы PHPMailer , в итоге использовал Swiftmailer, который работал сразу после того, как я установил его с помощью PHPComposer.
Мой внутренний почтовый сервер очень разборчивый и имеет тонны настроек и правил брандмауэра на уровне аппаратного и программного обеспечения, и я был удивлен, что это не вызвало у меня никаких проблем; электронные письма сразу же отправляются без проблем на порт 587.
Это то, что вам нужно для gmail:
этот класс предназначен для использования в Gmail.
Если все ваши проблемы и проблемы относятся к openSSL, вы должны выполнить следующие шаги:
1. Убедитесь, что DLL-файл модуля OpenSSL включен в установку PHP:
C: user> dir local php ext php_openssl.dll
Каталог C: local php ext
2. Создайте файл конфигурации PHP, localphpphp.ini , если он не существует:
3. Включите модуль OpenSSL, отредактировав файл конфигурации с помощью текстового редактора. Вам нужно удалить создателя комментариев (;) на двух конфигурационных строках:
Вот и все. Вы должны настроить настройку openSSL на своем веб-сервере Windows IIS. Следуйте этим параметрам и шагам, это может быть ваша проблема.
Эта проблема – слэши ()
Я пробовал с вами код, и я только изменил эту строку:
И он успешно работал.
Также вы должны следить за своей версией PHPMailer и вашей версией PHP.
Вы пытались отправить электронное письмо с не защищенным методом?
Вы уверены, что ваши учетные данные google действительны?
ОБНОВЛЕНО
Из командной строки вашего сервера, каков результат этой команды и сколько времени требуется для ответа
Интересно, сталкиваетесь ли вы с тем же вопросом, с которым столкнулся этот вопрос . Google активно хмурится тем, кто использует Gmail как свой собственный SMTP-сервер.
Google также ограничивает количество сообщений электронной почты, которые вы можете отправить через свою учетную запись Gmail за день. Если вы превысите ежедневную квоту, Google может временно отключить вашу учетную запись Gmail без каких-либо предупреждений, и вам может потребоваться до 24 часов, прежде чем вы сможете восстановить доступ к почтовому ящику Gmail.
Я мог видеть такую ошибку, которая может вызвать ошибку 500.
Из комментариев к вопросу, кажется довольно ясно, что эта проблема связана с OpenSSL .
Вы упомянули, что у вас уже есть extension=php_openssl.dll , но phpinfo() показывает, что он не загружен.
Перезапустили ли вы веб-сервер после раскола php-модуля openssl в php.ini ?
Это действительно очевидно, но все же стоит упомянуть. php.ini загружается при запуске, а перезапуск службы просто является распространенной ошибкой.
Проверьте значение Loaded Configuration File в phpinfo()
Если это не то же место, что и отредактированный php.ini , также становится понятно, почему он не был загружен. Также можно проверить следующие строки из phpinfo() .
- Файл конфигурации (php.ini)
- Загруженный файл конфигурации
- Сканирование этого каталога для дополнительных файлов .ini
Есть и другие вещи, которые могут быть сделаны как удаление и переустановка OpenSSL, но, возможно, было бы лучше сначала проверить эти более очевидные вещи.
Проверка журналов ошибок
Для php путь можно (снова) найти в phpinfo() . Посмотрите на значение error_log и проверьте последние записи сразу после того, как вы попытались перезагрузить свою страницу.
Также вы можете проверить файлы журнала IIS. Если вы не знаете путь в диспетчере IIS, выберите компьютер на левой панели, а в средней панели перейдите под «протоколирование» в области IIS. Обычно они указывают на нечто вроде C:inetpublogsLogFiles или C:WindowsSystem32LogFiles с C:WindowsSystem32LogFiles такой как W3SVC[x] где [x] – это идентификатор веб-сайта. (Будет только 1 если у вас есть только одна страница, в противном случае проверьте папку веб-сайтов верхнего уровня в диспетчере IIS, просмотрите списки сайтов в правой панели, это идентификатор приложения)
Настройка и настройка IIS
Начните с сервера ServerManager на сервере. Чаще всего это сервер, на котором будет запущен ваш php-сайт. Перейдите к разделу Добавление функций в раздел «Обзор функций». Проверьте службы SMTP в мастере добавления компонентов и нажмите «Установить». Теперь подождите завершения установки. Откройте диспетчер IIS6 (или IIS7) в разделе «Администрирование» -> «Информационные службы Интернета» 6.0 в меню «Пуск», конфигурация SMTP использует консоль управления из IIS6. В разделе [SMTP Virtual Server] щелкните правой кнопкой мыши и выберите свойства из контекстного меню. Перейдите на вкладку «Доступ» и нажмите кнопку «Реле». Добавьте новую запись в список, нажав кнопку «Добавить» и введите 127.0.0.1 (или IP-адрес вашего веб-сервера) в поле ввода для одного компьютера. Дважды нажмите «Остановить», чтобы применить новые настройки.
Настройка Php
Чтобы отправлять электронную почту Php, вам нужно сделать некоторые настройки. В основном есть два варианта. Если вы только собираетесь использовать SMTP-сервер в одном проекте и не хотите, чтобы он вмешивался в другие проекты, вы можете настроить конфигурацию из своего php-кода, добавив следующие строки где-нибудь перед отправкой электронной почты:
Другой способ, чтобы глобальное использование этих параметров, добавить следующие строки в файл php.ini.
Обязательно перезагрузите сервер после внесения этих изменений, чтобы убедиться, что они загружены.
Это решение предоставляется здесь http://geekswithblogs.net/tkokke/archive/2009/05/31/sending-email-from-php-on-windows-using-iis.aspx о том, как настроить IIS и php, и в качестве ответа на этот вопрос 500 возникает ошибка при попытке использовать функцию MAIL
Попробуйте использовать SSL-шифрование с портом 465:
Предупреждение: require_once (mailer / PHPMailerAutoload.php): не удалось открыть поток: такого файла или каталога нет …
Так я проложил файл
До: require_once «mailer/PHPMailerAutoload.php»;
После: require_once «../mailer/PHPMailerAutoload.php»;
… Тот же процесс, который вы обычно делаете, чтобы связать img в качестве фона с помощью css.
Источник
Я продолжаю иметь внутреннюю ошибку 500 на моем веб-сервере, размещенном на GoDaddy с использованием PHPmailer; Я попробовал несколько решений, доступных на StackOverflow, касающихся моей задачи, но ни одно из них не сработало.
Вот мой код:
require 'phpmailer/PHPMailerAutoload.php';
$feedback='';
$flag = array();
if(isset($_POST["submitlogin"]) and $_SERVER['REQUEST_METHOD'] == "POST"){
$name = seo_friendly_url($_POST['name']);
$email = seo_friendly_url($_POST['email']);
$subject = seo_friendly_url($_POST['subject']);
$message = seo_friendly_url($_POST['message']);
//Email
if (!preg_match("/([w-]+@[w-]+.[w-]+)/",$email)) {
$feedback="Invalid email format";
array_push($flag,"false");
}else {
array_push($flag,"true");
}
//Email
//Name
if (preg_match('/^[-a-zA-Z0-9._]+$/', $name)){
array_push($flag,"true");
}else {
$feedback="Invalid name format";
array_push($flag,"false");
}
//Nameif (!in_array("false", $flag)) {
//SMTP needs accurate times, and the PHP time zone MUST be set
//This should be done in your php.ini, but this is how to do it if you don't have access to that
date_default_timezone_set('Etc/UTC');
//Create a new PHPMailer instance
$mail = new PHPMailer;
//Tell PHPMailer to use SMTP
$mail->isSMTP();
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;
//Ask for HTML-friendly debug output
$mail->Debugoutput = 'html';
//Set the hostname of the mail server
$mail->Host = "smtpout.asia.secureserver.net";
//Set the SMTP port number - likely to be 25, 465 or 587
$mail->Port = 25;
//Whether to use SMTP authentication
//$mail->Username = 'email@email.com';
//$mail->Password = 'password';
$mail->SMTPAuth = false;
//Set who the message is to be sent from
$mail->setFrom('email@email.com');
//Set an alternative reply-to address
$mail->addReplyTo($email);
//Set who the message is to be sent to
$mail->addAddress('email@email.com'); // Add a recipient
$mail->addAddress('email@email.com');
$mail->addAddress('email@email.com);
//Set the subject line
$mail->Subject = 'HLS Inquiry';
//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML($message);$email_ar = $email;
$subject_ar = $name.", Thank you for your Inquiry";
$acknowledgement_receipt = '
<div style="padding:10px 20px;font-size:16px;">
<p>Dear '.$name.',</p>
<p>We've received your message and would like to thank you for contacting us. We will reply by email shortly.</p>
<p>Talk to you soon,</p>
<p>
<div>Customer Service</div>
</p>
</div>
';if ($mail->send()) {
$feedback = "<span style='color:green;'>Thank you for your inquiry. We will respond to you within 24 hours.</span>";
}
}
Обратите внимание, что я заменил некоторые из значений электронной почты как: email@email.com для моей конфиденциальности.
Я считал, что настройки электронной почты верны, потому что я уже использовал эти настройки с сайта моего друга, размещенного на JustHost.
0
Решение
В этой строке отсутствует ни одна кавычка:
$mail->addAddress('email@email.com);
Это довольно очевидно в SO, потому что вы можете видеть, как подсветка синтаксиса ломается в этой точке.
Когда вы получаете ошибку 500 и ничего не отображается, это признак того, что вы должны искать в журнале ошибок вашего веб-сервера.
0
Другие решения
Других решений пока нет …
96 votes
1 answers


Get the solution ↓↓↓
I am trying to email a form data with phpmailer. I am stuck with it.
for some reason I am getting Failed to load resource: the server responded with a status of 500 (Internal Server Error).
I have 2 pages. the index.php and sendit.php.
the index.php has a bootstrap modal box (the form data to be send to the user email).
the user fill in the form, click on save. the data will save into the database, and call the sendMail function to perform the sending operation.
The sendMail function make a ajax call to the sendit.php and send the data
When I hard code the data in the data array in the sendit.php, it will work. when I change it to $_POST[‘name’], don’t work.
Need HELP
Thanks in advance.
the code:
this is the index.php snippet code
$('#btnSave').on('click', function() {
// some code
// the ajax call
$.ajax({
type: "POST",
url: 'addEvent.php',
data: thedata,
success: function(d) {
if (d == 'sucess') {
// data to send to client email
data = {
"name": $('#inpName').val(),
}
sendMail(data); // call the function sendMail.
resetForm(); // reset the form
} else if (d === 'false') {
//show some message
},
error: function(error) {
alert(error);
}
});
}
// the sendMail function
function sendMail(theData)
{
$.ajax({
type: "POST",
url: "sendit.php",
data: theData
})
}
2021-11-24
Write your answer
12
votes


Answer
Solution:
A 500 Error means that you have a server error on that file.
The PHP code is formally correct — at least if you’re running a recent enough PHP — but on second thought, this is wrong:
$_POST('name')
The code will try to call the $_POST function, and crash. It should be$_POST['name'].
Share solution ↓
Additional Information:
Date the issue was resolved:
2021-11-24
Link To Source
Link To Answer
People are also looking for solutions of the problem: closed without sending a request; it was probably just an unused speculative preconnection
Didn’t find the answer?
Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.
Similar questions
Find the answer in similar questions on our website.
Write quick answer
Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.
About the technologies asked in this question
PHP
PHP (from the English Hypertext Preprocessor — hypertext preprocessor) is a scripting programming language for developing web applications. Supported by most hosting providers, it is one of the most popular tools for creating dynamic websites.
The PHP scripting language has gained wide popularity due to its processing speed, simplicity, cross-platform, functionality and distribution of source codes under its own license.
https://www.php.net/
Bootstrap
Bootstrap is not exclusively a CSS framework, but its most popular features are CSS-centric. These include a powerful grid, icons, buttons, map components, navigation bars, and more.
https://getbootstrap.com/
Welcome to programmierfrage.com
programmierfrage.com is a question and answer site for professional web developers, programming enthusiasts and website builders. Site created and operated by the community. Together with you, we create a free library of detailed answers to any question on programming, web development, website creation and website administration.
Get answers to specific questions
Ask about the real problem you are facing. Describe in detail what you are doing and what you want to achieve.
Help Others Solve Their Issues
Our goal is to create a strong community in which everyone will support each other. If you find a question and know the answer to it, help others with your knowledge.
Похоже, вы имеете дело с кучей проблем, и вот контрольный список: у вас проблемы с ssl, фактическим почтовым программным обеспечением и учетными данными. Это стало проблемой 3 из одной основной проблемы, и я предполагаю, что у вас нет либо ваших учетных данных набрано правильно, либо ваш открытый ssl не настроен, и у вас также возникают проблемы с использованием почтового программного обеспечения.
535 535 5.7.3 Аутентификация Неудачная означает, что auth не увенчался успехом, проверьте свое имя пользователя и пароль.
550, это означает, что принимающая система не могла доставить вашу электронную почту пользователю, к которому он был адресован, потому что почтовый ящик недоступен.
Существует множество других решений для решения вашей проблемы. Почему бы вам не попробовать что-то более простое, а не использовать autoload PHPMailerAutoload.php. Создайте новый файл и поместите код ниже, создайте тело сообщения (test_message.html) и вызовите его из браузера, чтобы проверить gmail smtp с учетными данными gmail. Это фрагмент PHPMailer о том, как использовать его с gmail smtp, и он не должен ошибаться, если у вас все правильно заполнено.
<?php
require_once('../class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
$mail = new PHPMailer();
$body = file_get_contents('test_message.html');
$body = eregi_replace("[]",'',$body);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "mail.yourdomain.com"; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "tls"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 587; // set the SMTP port for the GMAIL server
$mail->Username = "[email protected]"; // GMAIL username
$mail->Password = "yourpassword"; // GMAIL password
$mail->SetFrom('[email protected]', 'First Last');
$mail->AddReplyTo("[email protected]","First Last");
$mail->Subject = "PHPMailer Test Subject via smtp (Gmail), basic";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$address = "[email protected]";
$mail->AddAddress($address, "John Doe");
$mail->AddAttachment("images/phpmailer.gif"); // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
?>
Если вы получаете пользовательскую ошибку auth, то ваши учетные данные не вводятся в
правильно. Если это не проблема, вы получите сообщение об ошибке ssl, если вы не используете правильный порт.
Если у вас есть проблемы с программным обеспечением, вы должны попробовать что-то лучше.
Я обсуждал это утро, если мне следовало бы PHPMailer, в итоге использовал Swiftmailer, который работал сразу после того, как я установил его с помощью PHPComposer.
Мой внутренний почтовый сервер очень разборчивый и имеет тонну настроек и правил брандмауэра на уровне аппаратного и программного обеспечения, и я был удивлен, что это не вызвало у меня никаких проблем; электронные письма сразу отправляются без проблем на порт 587.
require_once 'vendor/swiftmailer/swiftmailer/lib/swift_required.php';
$transport = Swift_SmtpTransport::newInstance('mail.hellog***.com', 587)
->setUsername('[email protected]***.com')
->setPassword('apa******')
;
Это то, что вам нужно для gmail:
$transporter = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
->setUsername($this->username)
->setPassword($this->password);
$this->mailer = Swift_Mailer::newInstance($transporter);
Если вы ничего не хотите, вы можете попробовать phpgmailer:
https://github.com/GregDracoulis/LectureBank/tree/master/phpgmailer
вот пример того, как его использовать:
http://www.vulgarisoverip.com/2006/10/13/update-send-email-with-php-and-gmail-hosted-for-your-domain/
этот класс предназначен для использования в Gmail.
Если все ваши проблемы и проблемы относятся к openSSL, вы должны выполнить следующие шаги:
1. Убедитесь, что DLL файл модуля OpenSSL включен в установку PHP:
C:user > dirlocalphpextphp_openssl.dll
Каталог C:localphpext
php_openssl.dll
2. Создайте файл конфигурации PHP, localphpphp.ini, если он не существует:
C:user>copy localphpphp.ini-production localphpphp.ini
1 file(s) copied.
3. Включите модуль OpenSSL, отредактировав файл конфигурации с помощью текстового редактора. Вам нужно удалить создателя комментариев (;) на двух конфигурационных строках:
...
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "ext"
...
extension=php_openssl.dll
...
Вот оно. Вы должны настроить настройку openSSL на своем веб-сервере Windows IIS. Следуйте этим параметрам и шагам, это может быть ваша проблема.
Welcome to the Treehouse Community
The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.
I’ve been attempting to set up PHPMailer on a website and I keep getting a 500 Internal Server Error. I have no idea what the problem is. Can someone please help me out? I would greatly appreciate it.
<?php // BioAssay Sciences PHPMailer if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = trim(filter_input(INPUT_POST,"name",FILTER_SANITIZE_STRING)); $email = trim(filter_input(INPUT_POST,"email",FILTER_SANITIZE_STRING)); $phone = trim(filter_input(INPUT_POST,"phone",FILTER_SANITIZE_STRING)); $location = trim(filter_input(INPUT_POST,"location",FILTER_SANITIZE_STRING)); $company = trim(filter_input(INPUT_POST,"company",FILTER_SANITIZE_STRING)); $message = trim(filter_input(INPUT_POST,"message",FILTER_SANITIZE_STRING)); $email_body = "Potential Client from the BioAssay Sciences Contact Form:nn"; if ($name == ""){ echo "Please include your name."; exit; } elseif ($email == ""){ echo "Please include your email address."; exit; } elseif ($phone == ""){ echo "Please include your phone number."; exit; } elseif ($message == ""){ echo "Please include your message."; exit; } else { continue; } if ($_POST["address"] != "") { echo "Your form submission has an error."; exit; } include($_SERVER["DOCUMENT_ROOT"] . "/inc/phpmailer/class.phpmailer.php"); $mail = new PHPMailer; if (!$mail->ValidateAddress($email)){ echo "You must specify a valid email address."; exit; } $email_body .= "Name: " . $name . "n"; $email_body .= "Email Address: " . $email . "n"; $email_body .= "Phone Number: " . $phone . "n"; $email_body .= "Company: ". $company . "n"; $email_body .= "Location: " . $location . "n"; $email_body .= "Message: " . $message . "n"; $mail->setFrom($email, $name); $mail->addAddress('drlittle@dr-tom.com', 'Thomas A. Little'); // Add a recipient $mail->addCC('webmaster@bioassaysciences.com'); $mail->isHTML(false); // Set email format to HTML $mail->Subject = 'BioAssay Sciences Contact from ' . $name; $mail->Body = $email_body; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; if(!$mail->send()) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; exit; } header("Location: /thankyou_url.php"); } ?> <?php $page_title = "BioAssay Sciences - Building a Better Assay"; $page_description = ""; // Be sure to set the current page to 'active' for navigation highlighting $active_about = ""; $active_platform = ""; $active_cost = ""; $active_productivity = ""; $active_clients = ""; $active_contact = "active"; include($_SERVER["DOCUMENT_ROOT"] . "/inc/header.php"); ?> <div class="breadcrumb-wrap"> <div class="container"> <div class="row"> <div class="col-sm-6"> <h4>Contact Information</h4> </div> <div class="col-sm-6 hidden-xs text-right"> <ol class="breadcrumb"> <li><a href="/index.php">Home</a></li> <li>Contact</li> </ol> </div> </div> </div> </div><!--breadcrumbs--> <div class="divide80"></div> <div class="container"> <div class="row"> <div class="col-md-8 margin30"> <h3 class="heading">A Global Company</h3> <p> Please use the following form to contactact BioAssay Sciences. Please provide us with as much detail as possible, including your company, location, requirements, and project information. We will reply to you within 24 hours. </p> <div class="divide30"></div> <div class="form-contact"> <div class="required"> <p>( <span>*</span> fields are required )</p> </div> <form action="/contact/index.php" method="post"> <div class="row"> <div class="col-md-6"> <div class="row control-group"> <div class="form-group col-xs-12 controls"> <label for="name">Name<span>*</span></label> <input type="text" class="form-control" placeholder="Name" id="name" name="name" required> <p class="help-block"></p> </div> </div> </div> <div class="col-md-6"> <div class="row control-group"> <div class="form-group col-xs-12 controls"> <label for="email">Email Address<span>*</span></label> <input type="email" class="form-control" placeholder="Email Address" id="email" name="email" required> <p class="help-block"></p> </div> </div> </div> </div> <div class="row control-group"> <div class="form-group col-xs-12 controls"> <label for="phone">Phone Number<span>*</span></label> <input type="tel" class="form-control" placeholder="Phone Number" id="phone" name="phone" required> <p class="help-block"></p> </div> </div> <div style="display: none"> <label for="address">Address:</label><br> <input type="text" name="address" id="address" placeholder="1234 Henderson Way" name="address"><br><br> <p>Please leave the address field blank.</p> </div> <div class="row"> <div class="col-md-6"> <div class="row control-group"> <div class="form-group col-xs-12 controls"> <label for="company">Company</label> <input type="text" class="form-control" placeholder="Company" id="company" name="company"> <p class="help-block"></p> </div> </div> </div> <div class="col-md-6"> <div class="row control-group"> <div class="form-group col-xs-12 controls"> <label for="location">Location</label> <input type="text" class="form-control" placeholder="Location" id="location" name="location"> <p class="help-block"></p> </div> </div> </div> </div> <div class="row control-group"> <div class="form-group col-xs-12 controls"> <label for="message">Message<span>*</span></label> <textarea rows="5" class="form-control" placeholder="Message" id="message" name="message" required></textarea> <p class="help-block"></p> </div> </div> <br> <div id="success"></div> <div class="row"> <div class="form-group col-xs-12"> <button type="submit" class="btn btn-theme-bg btn-lg">Send Message</button> </div> </div> </form> </div><!--contact form--> </div> <div class="col-md-4"> <h3 class="heading">Contact info</h3> <ul class="list-unstyled contact contact-info"> <li><p><strong><i class="fa fa-map-marker"></i> Address:</strong> <br> Thomas A. Little <br> 12401 N Wildflower Lane <br> Highland, UT 84003</p></li> <li><p><strong><i class="fa fa-envelope"></i> Email:</strong> <a href="mailto: drlittle@dr-tom.com">drlittle@dr-tom.com</a></p></li> <li> <p><strong><i class="fa fa-phone"></i> Phone:</strong> +1 925 285-1847</p></li> </ul> <div class="divide40"></div> <h4>Social Media</h4> <div class=" margin10"> <a href="https://www.linkedin.com/in/thomas-little-516766b" class="social-icon si-dark si-colored-linkedin" target="_blank"> <i class="fa fa-linkedin"></i> <i class="fa fa-linkedin"></i> </a> <a href="https://twitter.com/TLC_Consulting" class="social-icon si-dark si-colored-twitter" target="_blank"> <i class="fa fa-twitter"></i> <i class="fa fa-twitter"></i> </a> <a href="https://www.facebook.com/thomas.little.58367" class="social-icon si-dark si-colored-facebook" target="_blank"> <i class="fa fa-facebook"></i> <i class="fa fa-facebook"></i> </a> <a href="https://www.youtube.com/channel/UCDphG55AIuqg_wGk7YGKNMQ" class="social-icon si-dark si-colored-youtube" target="_blank"> <i class="fa fa-youtube"></i> <i class="fa fa-youtube"></i> </a> </div><!--socials--> </div> </div> </div> <div class="divide40"></div> <?php include($_SERVER["DOCUMENT_ROOT"] . "/inc/footer.php"); ?>
Поскольку люди, похоже, обращаются к этому вопросу, когда речь заходит об ошибках компоновщика, я собираюсь добавить это здесь.
Одной из возможных причин ошибок компоновщика с GCC 5.2.0 является то, что новая библиотека libstdc ++ ABI теперь выбран по умолчанию.
Если вы получаете ошибки компоновщика о неопределенных ссылках на символы, которые включают типы в пространстве имен std :: __ cxx11 или теге [abi: cxx11], то это, вероятно, указывает на то, что вы пытаетесь связать файлы объектов, которые были скомпилированы с различными значениями для макроса _GLIBCXX_USE_CXX11_ABI. Это обычно происходит при подключении к сторонней библиотеке, которая была скомпилирована с более старой версией GCC. Если сторонняя библиотека не может быть перестроена с новым ABI, вам нужно будет перекомпилировать свой код со старым ABI.
. Если вы вдруг получите ошибки компоновщика при переключении на GCC после 5.1.0 это было бы замечательно.
задан 16 revs, 8 users 46% 16 January 2014 в 19:41
поделиться
11 ответов
ответ дан Community 25 August 2018 в 20:05
поделиться
Иногда, когда в процессе dev есть обе рабочие станции WIN и системы LINUX (хостинг), а в коде вы не видите никакого вывода перед соответствующей строкой, это может быть форматирование файла и отсутствие Unix LF (linefeed) заканчивается.
Что мы обычно делаем, чтобы быстро исправить это, переименуйте файл, а в системе LINUX создайте новый файл вместо переименованного, а затем скопируйте его в него. Во многих случаях это решает проблему, так как некоторые из файлов, которые были созданы в WIN, когда-то перемещенные на хостинг, вызывают эту проблему.
Это исправление — это легкое исправление для сайтов, которыми мы управляем по FTP, и иногда может спасти наш новый членов команды некоторое время.
ответ дан 2 revs, 2 users 91% 25 August 2018 в 20:05
поделиться
Обычно эта ошибка возникает, когда мы отправляем заголовок после эха или печати. Если эта ошибка возникает на определенной странице, убедитесь, что страница не выполняет эхо-сигналы перед вызовом start_session().
Пример непредсказуемой ошибки:
<?php //a white-space before <?php also send for output and arise error
session_start();
session_regenerate_id();
//your page content
Еще один пример:
<?php
includes 'functions.php';
?> <!-- This new line will also arise error -->
<?php
session_start();
session_regenerate_id();
//your page content
Вывод: не выводить символ перед тем, как вызывать функции session_start() или header(), даже не с помощью пробела или новой строки
ответ дан 2 revs, 2 users 96% 25 August 2018 в 20:05
поделиться
ОБЩИЕ ПРОБЛЕМЫ:
(скопировано из: source )
================= ===
1) перед командой header(.......); не должно быть никакого выхода (т. е. echo.. или HTML-коды].
2) удалить любое пробел (или newline) до <?php и после ?> тегов.
3) ЗОЛОТОЕ ПРАВИЛО! — проверьте, поддерживает ли этот файл php (а также, если вы include другие файлы) UTF8 без кодировки спецификации (а не только UTF-8). Это проблема во многих случаях (потому что кодированный файл UTF8 имеет что-то особенное в начале файла php, которое ваш текстовый редактор не показывает) !!!!!!!!!!!
4) После header(...); вы должны использовать exit;
5) всегда используйте ссылку 301 или 302:
header("location: http://example.com", true, 301 ); exit;
6) Включить ошибку составление отчетов. И сообщите об ошибке.
7) Если ни одно из вышеизложенных не помогает, используйте перенаправление JAVSCRIPT (однако, сильно не рекомендованный метод), может быть последним шансом в пользовательских случаях …:
echo "<script type='text/javascript'>window.top.location='http://website.com/';</script>"; exit;
ответ дан 4 revs, 3 users 74% 25 August 2018 в 20:05
поделиться
Другая неудачная практика может вызвать эту проблему, которая еще не указана.
См. этот фрагмент кода:
<?php
include('a_important_file.php'); //really really really bad practise
header("Location:A location");
?>
Все в порядке, верно?
Что делать, если «a_important_file.php»:
<?php
//some php code
//another line of php code
//no line above is generating any output
?>
----------This is the end of the an_important_file-------------------
Это не сработает? Почему? Потому что уже создана новая строка.
Теперь, хотя это не общий сценарий, что, если вы используете структуру MVC, которая загружает большое количество файлов перед передачей данных на ваш контроллер? Это не необычный сценарий. Будьте готовы к этому.
Из PSR-2 2.2:
- Все файлы PHP ДОЛЖНЫ использовать
Unix LF (linefeed) line ending. - Все файлы PHP ДОЛЖНЫ заканчиваться на
single blank line. - Тег закрытия?> ДОЛЖЕН быть
omittedиз файлов, содержащихonly php
Поверьте, следующие стандарты могут сэкономить вам много часов из вашей жизни:)
ответ дан MD. Sahib Bin Mahboob 25 August 2018 в 20:05
поделиться
Это сообщение об ошибке запускается, когда отправляется сообщение перед отправкой заголовков HTTP (с помощью setcookie или header ). Общие причины вывода чего-либо перед заголовками HTTP:
- Случайные пробелы, часто в начале или в конце файлов, например:
<?php // Note the space before "<?php" ?>
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Чтобы избежать этого, просто оставьте закрытие ?> — это не обязательно. g2] в начале файла php. Изучите ваши php-файлы с помощью шестнадцатеричного редактора, чтобы узнать, так ли это. Они должны начинаться с байтов 3F 3C. Вы можете безопасно удалить спецификацию EF BB BF с начала файлов.
echo, printf, readfile, passthru, код до <? и т. д. display_errors php.ini. Вместо того, чтобы сбой при ошибке программиста, php молча фиксирует ошибку и выдает предупреждение. Хотя вы можете изменить конфигурации display_errors или error_reporting , вы должны скорее исправить эту проблему. Основными причинами являются доступ к неопределенным элементам массива (например, $_POST['input'] без использования empty или isset , чтобы проверить, установлен ли вход) или используя неопределенная константа вместо строкового литерала (как в $_POST[input], обратите внимание на недостающие кавычки). Включение буферизации вывода должно устранить проблему; все выходные данные после вызова ob_start буферизуются в памяти до тех пор, пока вы не отпустите буфер, например. с ob_end_flush .
Однако, хотя буферизация вывода исключает проблемы, вы должны действительно определить, почему ваше приложение выводит тело HTTP перед заголовком HTTP. Это будет похоже на телефонный звонок и обсуждение вашего дня и погоды, прежде чем сообщить вызывающему, что у него неправильный номер.
ответ дан NikiC 25 August 2018 в 20:05
поделиться
Простой совет: простое пространство (или невидимый специальный символ) в вашем скрипте, прямо перед самым первым тегом <?php, может вызвать это! Особенно, когда вы работаете в команде, а кто-то использует «слабую» IDE или перепутал файлы со странными текстовыми редакторами.
Я видел эти вещи;)
ответ дан PeeHaa 25 August 2018 в 20:05
поделиться
Это из-за этой строки:
printf ("Hi %s,</br />", $name);
Вы не должны печатать / эхо ничего, прежде чем отправлять заголовки.
ответ дан Sarfraz 25 August 2018 в 20:05
поделиться
Вы делаете
printf ("Hi %s,</br />", $name);
перед установкой файлов cookie, что запрещено. Вы не можете отправить какой-либо вывод перед заголовками, даже пустую строку.
ответ дан Seth Carnegie 25 August 2018 в 20:05
поделиться
Я получил эту ошибку много раз раньше. И я уверен, что все программисты PHP по крайней мере однажды получили эту ошибку. Чтобы решить эту ошибку, вы можете решить использовать решение по вашему уровню проблемы:
Возможное решение 1:
Возможно, вы оставили пробелы до или после (в конце файла после?>) ie
THERE SHOULD BE NO BLANK SPACES HERE
<?php
echo "your code here";
?>
DO CHECK FOR BLANK SPACES HERE AS WELL; THIS LINE (blank line) SHOULD NOT EXIST.
В большинстве случаев это должно решить вашу проблему. Проверьте все файлы, связанные с файлом require.
Примечание: Иногда EDITOR (IDE), например gedit (редактор linux по умолчанию), добавляет одну пустую строку в файл save save. Этого не должно быть. Если вы используете linux. вы можете использовать редактор VI для удаления пробела / строк после?> в конце страницы.
Если это не ваш случай, тогда вы можете использовать ob_start для буферизации вывода, как показано ниже:
Возможное решение 2:
<?php
ob_start();
// code
ob_end_flush();
?>
Это приведет к буферизации вывода и ваши заголовки будут созданы после буферизации страницы.
ответ дан T.Todua 25 August 2018 в 20:05
поделиться
Вместо нижней строки
//header("Location:".ADMIN_URL."/index.php");
напишите
echo("<script>location.href = '".ADMIN_URL."/index.php?msg=$msg';</script>");
или
?><script><?php echo("location.href = '".ADMIN_URL."/index.php?msg=$msg';");?></script><?php
Это определенно решит вашу проблему. Я столкнулся с одной и той же проблемой, но решил решить эту проблему путем написания заголовка.
ответ дан Yogesh Suthar 25 August 2018 в 20:05
поделиться
Другие вопросы по тегам:



