|
|
|
| Помогите чайнику, pls!
Поставил на локальной машине Apache/2.0.47 (Win32) и PHP Version 4.0.4pl1. Пытался написать прогу, которая отсылает на заранее известный e-mail письма. Не отсылается никак. Натягал примеров с и-нета, они тоже не работают!
Ошибка (т.е. “Warning Failed to Receive in…”) происходит в строке, где вызывается функция mail(). Вычитал, что PHP таких версий может быть собран без поддержки функций sendmail. Попробовал через класс Mail_mime, как описано в некоторых обуч. статьях (к примеру на web-faq.ru, lexcode.ru, emanual.ru, megalib.com/books… и др, кстати, авторам этих статей огромное спасибо!!!). Оказалось, что недостаточно скомпонован PEAR (требуемого интерпритатором PEAR.PHP не оказалось). Прочитал, что эти проблемы решаются в PHP более поздних версий. Скачал PHP4.4, проинсталил инсталлером, скинул недостающие файлы и папки в каталог. После этого выдавалась куча ошибок, и не отображалось большинство глобальных переменных (register_globals=On – не спасло). После долгих мучений я вернул старую версию PHP. Но теперь перестал срабатывать мой заголовок HEADER (“Location myfile.html”), дескать, «заголовок был уже послан» (“Cannot add header information - headers already sent by (output started at E:\Program Files\Apache Group…”). А ведь раньше это работало!
Так вот, уважаемые профи, пожалуйста, подскажите, что нужно изменить в конфигурации php.ini, httpd.conf или где еще, чтобы устранить указанную проблему. Кстати, а что все-таки предпринять с отправкой почты?
Весьма благодарен всем откликнувшимся!!! | |
|
|
|
|
|
|
|
для: Andrew
(15.07.2005 в 02:43)
| | Cannot add header information - headers already sent by выводится если до отправки заголовка выводится что-либо в браузер - например теже сообщения об ошибках. Кстати, что за ошибки - часом не Notice - в этом случае нужно просто понизить уровень тревожности интерпретатора. Дело в том, что по умолчанию интерпретатор PHP настроен на максимальную чувствительность к ошибкам и предирается даже к мелочам печатая так называемые советы (Notice). Следует понизить уровень тревожности интерпретатора (как это сделано на всех хостингах) установив к конфигурационном файле php.ini более низкий уровень тревожности, исправив директиву error_reporting согласно статье по ссылке http://www.softtime.ru/info/articlephp.php?id_article=23
Для отправки почты на локальной машине должен быть установлен транспортный почтовый агент (почтовый сервер). В Windows его по умолчанию нет - его нужно добывать и ставить, в отличие от UNIX, где практически в каждой версии имеется sendmail. sendmail под Windows не портирован, следовательно необходимо найти альтернативный сервер.
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=4241 | |
|
|
|
|
|
|
|
для: cheops
(15.07.2005 в 02:56)
| | Нет, "Notice" не было, "Warning"-и. Да, в браузер посылается первой строчкой:
(сейчас дословно не помню) X-чегототам далее версия PHP и Content-type: text/html. Как видно отправив этот заголовок апач и не дает сработать моему header.
Как доберусь домой, гляну error-reporting, спасибо. Но думается мне, что не в этом дело, ведь стреницы, на которых нет перенаправления показываются. Я думал, может инсталлятор php какую директиву изменил в httpd.conf апача автоматически? А что, предупреждения останавливают обработку скрапта интерпретатором и если понизить уровень тревожности, то скрипт будет срабатывать? (я к тому, что мне они на локальной машине не мешают, наоборот, подсказки, абы скрипт работал!)
Так что, если я достану почтовый сервер под Win, не зависимо от версии PHP отправка почты будет работать и с функцией mail() все будет в порядке, или тут могут быть проблемы в зависимости от версии? и какую версию лучше ставить, посоветуйте пожалуйста (ну, сочетание PHP, Apache и MySQL)?
Спасибо за отзывчивость!!! | |
|
|
|
|
|
|
|
для: Andrew
(15.07.2005 в 16:08)
| | >А что, предупреждения останавливают обработку скрапта интерпретатором
Нет, просто они иницируют вывод в броузер, которого не должно происходить до установки кук (старта сессии). | |
|
|
|
|
|
|
|
для: Loki
(15.07.2005 в 17:19)
| | Поставил PHP5, проблема с переадресацией та же. Выход нашел, но не окончательный. Если строки с header переместить в начало кода (или почти в начало, напр. до ?> и HTML тегов), все работает, на каком-то месте пперестает срабатывать. Пока логики не понял. Одна проблемка, если я, например, хочу по условию if(что-то не так), который находится где-то в середине кода, перенаправить пользователя на некую страницу, то header не срабатывает. Скажите пожалуйста, как по Вашему опыту, это нормально, или ненормально, чтобы header срабатывал в любом месте кода, как было у меня на версии PHP4.0.4?
И что Вы можете посоветовать для решения проблемы переадресации пользователя с любого места кода программы?
Спасибо за поддержку !!!
А по поводу почты вопрос следующий. Закачал программу sendmail под Win32, установил. Прописал следующую конфигурацию:
[OPTIONS]
;Mail servers host name
MAILSERVER=mail.localhost.com
;Default value for senders email address
FROM=yorname@localhost.com
;Mail servers IP port
PORT=25
;Registration key
REGKEY=none
;Timeout interval value when sending mail in seconds
TIMEOUT=60
;Default value for reply-to address
REPLYTO=
при вызове функции mail() выдается следующее:
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in …\Apache2\htdocs\... \send.php on line 14 (это где mail() вызывается)
Пожалуйста, подскажите, как правильно прописать необходимые строчки (и какие?!) в php.ini, чтобы наконец, отправка заработала!
для упрощения ситуации прикрепляю свой php.ini
Еще раз весьма признателен! | |
|
|
|
|
|
|
|
для: Andrew
(16.07.2005 в 16:22)
| | Ув.читатели сообщений Вашего покорного слуги! Спасибо, с HEADER-ами разобрался (называется: сам свиснул, сам побежал :)) Может это принесет пользу новичкам (таким как я). Так вот, в php.ini есть директива output_buffering, в случае значения Off которой, именно и происходит то, чтро я описал выше. Если On, то заголовки посылаются из любого места кода.
А вот с настройкой sendmail так ничего и не вышло. Мой клич о помощи остается в силе, уважаемые профи! | |
|
|
|
|
|
|
|
для: Andrew
(18.07.2005 в 01:49)
| | А дело всё под Windows настраивается? Имеется ли у вас почтовый сервер? Дело в том, что в UNIX sendmail часто идёт в составе дистрибутива, а в Windows в состав почтовый сервер не входит... | |
|
|
|
|
|
|
|
для: cheops
(18.07.2005 в 12:44)
| | Да это я уже понял, только я уже скачал sendmail под Windows, что-то с настройками не то.
Думал, может у кого опыт был борьбы с подобной проблемой... Неужели никто не знает? :((( | |
|
|
|
|
|
|
|
для: Andrew
(19.07.2005 в 09:40)
| | Хм... а sendmail под Windows портировали? В любом случае, если вы хотите, чтобы письма ходили дальше вашей машины - машина должна иметь постоянный IP-адрес, который прописан в DNS-серверах. | |
|
|
|
|