Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите! настройки php.ini, httpd.conf, отправка на e-mail
 
 автор: Andrew   (15.07.2005 в 02:43)   письмо автору
 
 

Помогите чайнику, 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 или где еще, чтобы устранить указанную проблему. Кстати, а что все-таки предпринять с отправкой почты?

Весьма благодарен всем откликнувшимся!!!

   
 
 автор: cheops   (15.07.2005 в 02:56)   письмо автору
 
   для: 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

   
 
 автор: Andrew   (15.07.2005 в 16:08)   письмо автору
 
   для: 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)?
Спасибо за отзывчивость!!!

   
 
 автор: Loki   (15.07.2005 в 17:19)   письмо автору
 
   для: Andrew   (15.07.2005 в 16:08)
 

>А что, предупреждения останавливают обработку скрапта интерпретатором
Нет, просто они иницируют вывод в броузер, которого не должно происходить до установки кук (старта сессии).

   
 
 автор: Andrew   (16.07.2005 в 16:22)   письмо автору
 
   для: 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   (18.07.2005 в 01:49)   письмо автору
 
   для: Andrew   (16.07.2005 в 16:22)
 

Ув.читатели сообщений Вашего покорного слуги! Спасибо, с HEADER-ами разобрался (называется: сам свиснул, сам побежал :)) Может это принесет пользу новичкам (таким как я). Так вот, в php.ini есть директива output_buffering, в случае значения Off которой, именно и происходит то, чтро я описал выше. Если On, то заголовки посылаются из любого места кода.

А вот с настройкой sendmail так ничего и не вышло. Мой клич о помощи остается в силе, уважаемые профи!

   
 
 автор: cheops   (18.07.2005 в 12:44)   письмо автору
 
   для: Andrew   (18.07.2005 в 01:49)
 

А дело всё под Windows настраивается? Имеется ли у вас почтовый сервер? Дело в том, что в UNIX sendmail часто идёт в составе дистрибутива, а в Windows в состав почтовый сервер не входит...

   
 
 автор: Andrew   (19.07.2005 в 09:40)   письмо автору
 
   для: cheops   (18.07.2005 в 12:44)
 

Да это я уже понял, только я уже скачал sendmail под Windows, что-то с настройками не то.
Думал, может у кого опыт был борьбы с подобной проблемой... Неужели никто не знает? :(((

   
 
 автор: cheops   (19.07.2005 в 13:54)   письмо автору
 
   для: Andrew   (19.07.2005 в 09:40)
 

Хм... а sendmail под Windows портировали? В любом случае, если вы хотите, чтобы письма ходили дальше вашей машины - машина должна иметь постоянный IP-адрес, который прописан в DNS-серверах.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования