Forum Webscript.Ru

Программирование => PHP => Тема начата: jus от 07 Ноября 2003, 17:08:37

Название: всеми изъеденная функция mail(), но тут особенный случай
Отправлено: jus от 07 Ноября 2003, 17:08:37
Люди помогите (прочтите до конца - я не буду спрашивать, что и какиепараметры обозначают в mail()) все форумы облазила - немного получилось - но дальше тупик...

 Итак ситуация:
На сервер был поставлен АЛЬТ линукс Мастер 2.2
через apt-get поставлен Apache/1.3.28 (ALT Linux/alt9) PHP/4.3.4-dev/ALT с сизифа
[root@rabbit conf]# rpm -qa | grep php
php-mysql-4.3.4-alt0.cvs20030830
mod_php-4.3.4-alt0.cvs20030903
php-common-4.3.4-alt0.cvs20030903

Все сайты на ПХП работают - всё хорошо но вот только не отрабатывала функция mail() не отсылала письма, для проверки был напиман примерно такой скрипт

if (mail(здесь всё правильно.... все параметры правильно
)
echo \'message sent\';
else {
echo \'error!\';
}
?>
так вот при его запуске вываливалось
Warning: mail():
Permission denied: unable
to execute shell to run
mail delivery binary
\'/usr/sbin/sendmail -t -i\' in
/www/www.serdi.ru/htdocs/111.php
on line 2
error!
что только не пробывала  прва на сендмыло:
root@jus:~/distr/magazine/deface/d2#
ls -al /usr/sbin | grep sendmail
-r-xr-sr-x 1 root smmsp 549092 Мар 3 2003 sendmail*

потом почитав мануалы и полазив по конференциям выяснилось что в новой версии ПХП, которая находится в сизифе разработчики этого   модуля (Mail) по какй-то не мыслемой причине перед работой с содержимым
 параметра sendmail_path вставили проверку:
 ...
 if (access(sendmail_path, X_OK)) {
 ...
 
 Соответственно, если в параметре sendmail_path есть что-нибудь кроме имени (например -t -i) файла возникает ошибка.
 
 Так что, люди у кого возникнет такая проблема просто исправьте в php.ini
 sendmail_path=/usr/sbin/sendmail -t -i
 на
 sendmail_path=/usr/sbin/sendmail
 
 Теперь идём далее -он один чёрт неотрабатывает нормально
 error выдаёт,  нуно теперь наверно узнать код ошибки
чтобы знать в каком направлении бороться дальше mail() возвращает либо да, либо нет, а как узнать код ошибки?
я уже неделю мучаюсь - не пойму в чём дело - у других этот же скрипт (один в один) отрабатывает всё прекрасно и отсылает - у меня же - нифига!
Пожалйста, профессионалы помогите найти направление - куда дальше бить, а то уволят...
Так же ставила всё это дело на слакваре (апач 27 и пхп 4.3.3)
всё работатет...
Плиз - наваедите на путь истинный как можно вычислить причину не выполнения функции mail()
Название: всеми изъеденная функция mail(), но тут особенный случай
Отправлено: Yukko от 07 Ноября 2003, 17:42:09
не уверен... но попробуй:
http://www.altlinux.ru/pipermail/sisyphus/2003-October/058175.html

а вообще:
http://www.google.com.ua/search?hl=uk&ie=windows-1251&q=Permission+denied%3A+unable+mail+delivery+binary+php&meta=
Название: всеми изъеденная функция mail(), но тут особенный случай
Отправлено: jus от 07 Ноября 2003, 17:45:08
нет это я уже делала - это спасло от
Warning: mail(): Permission denied: unable to execute shell to run mail
> delivery binary \'/usr/sbin/sendmail -t -i\' in ...

А дальше как узнать почему маил() не отправляет?
Название: всеми изъеденная функция mail(), но тут особенный случай
Отправлено: ThE0ReTiC от 08 Ноября 2003, 17:25:45
jus
а что в /var/log/maillog
?
Название: всеми изъеденная функция mail(), но тут особенный случай
Отправлено: jus от 10 Ноября 2003, 11:13:01
вот именно что ничего!
не знаю куда бить дальше
Люди кто заядлый АЛьт пользователь - как через apt-get можно поставить не последнюю версию ПХП а скажем 4.3.3
а то он предлагает всё время последнюю...
Название: всеми изъеденная функция mail(), но тут особенный случай
Отправлено: jus от 10 Ноября 2003, 11:27:29
щас стоит уже
php-common-4.3.4-alt0.cvs20031101
php-imap-4.3.4-alt0.cvs20031101
php-sockets-4.3.4-alt0.cvs20031101
mod_php-4.3.4-alt0.cvs20031101
php-mysql-4.3.4-alt0.cvs20031101
И теперь ещё такая ошибка вылетает
(раньше её не было)
Fatal error:  Allowed memory size of 8388608 bytes exhausted (tried to allocate 46080 bytes) in /www.site.ru/htdocs/bitrix/modules/subscribe/classes/general/subscription.php on line 72


может кто знает что может вызывать подобные ошибки
Название: всеми изъеденная функция mail(), но тут особенный случай
Отправлено: Yukko от 10 Ноября 2003, 13:46:33
jus
Выскажу свое мнение, оно может быть ошибочным, если что не пинать больно :) PHP и все остальное можно взять не с сайта АЛЬТ линукса, а с того места, откуда все берут, php.net  и т.д. Затянуть по фтп и руцями скомпилять.
Лично я бы проверил, отправляется ли вообще почта  с этого хоста, с самого начала поставил бы обкатанный дистр.
Название: всеми изъеденная функция mail(), но тут особенный случай
Отправлено: jus от 11 Ноября 2003, 17:30:28
ага потом начнут зависимости вылазить - тоже не гуд уже было
Название: всеми изъеденная функция mail(), но тут особенный случай
Отправлено: Oak от 15 Ноября 2003, 23:29:56
Подменяешь sendmail на скрипт с соотв названием  (временно)
пишешь свой лог - смотришь - вызывается ли вообще он

Могу ошибаться, но "unable to execute shell " скорее значит, что нельзя запустить ШЕЛЛ, а не сендмейл.

У тебя от чьего имени запущен httpd/php ? и какой у него шелл стоит ?

Да и что пишут в error.log- е ?
Название: всеми изъеденная функция mail(), но тут особенный случай
Отправлено: Croaker от 22 Ноября 2003, 04:03:01
а просто sendmail на прямую отправляет?
Название: всеми изъеденная функция mail(), но тут особенный случай
Отправлено: jus от 22 Ноября 2003, 17:44:27
to Oak
да с проблемой "анэйбэл ту ран шелл" уже разобралась если вы внимательно читали, вы бы увидели в чём была проблема
теперь такой ошибки не вылетает!
но попрежнему письма через пхп маил функцию не отсылаются и я уже устала бороться, перловый скрипт через сендмаил всё прекрасно отсылает!
а вот через пхп не хочет
Люди может кто подскажет, делаю на слакваре
echo testing | sendmail -froot@serdi.ru -t jus@serdi.ru
пашет отправляет без проблем!
то же саме делаю на АЛЬте
[root@rabbit var]# echo testing | sendmail -froot@serdi.ru -t jus@serdi.ru


просит ещё что-то ввести
лано делаем без -t
echo testing | sendmail -froot@serdi.ru jus@serdi.ru

тоже просит что-то ввести
хотя через никсовую "команду" mail - она же тоже юзает сендмыло всё отправляется на альте безпроблем!
теперь делаю так
$result = exec("echo testing | mail -s testing jus@serdi.ru", $sendmail, $error );
  if ($error){
        echo $result;
    echo $error;
            }

?>
ждёт долго ответа и всё ничего не выдаёт - может у кого стоит Альт и он подскажет как с шелла через сендмаил отправить почту "одной строчкой"?
Уже сил нет - хоть бери да сноси сервер из-за такой фигни
Название: всеми изъеденная функция mail(), но тут особенный случай
Отправлено: Oak от 22 Ноября 2003, 17:53:31
Может CC: просит ?

man mail:
Цитировать

     ask     Causes mail to prompt you for the subject of each message you
             send.  If you respond with simply a newline, no subject field
             will be sent.

     askcc   Causes you to be prompted for additional carbon copy recipients
             at the end of each message.  Responding with a newline indicates
             your satisfaction with the current list.
.......
If an
     option is not set, mail will look for an environment variable of the same
     name.

может поможет ?