Have You Tried IT ?

Information Technology from scratch

Błąd: sendmail returned error code 127

Dodano przez Kategoria: Linux

Po zainstalowaniu i skonfigurowaniu rozszerzenia PEAR przyszła pora na wykorzystaniu jego możliwości w akcji. Na pierwszy rzut poszło rozszerzenie do obsługi poczty, które diametralnie przyspiesza i ułatwia masowe rozsyłanie e-maili w PHP. Tak więc na początek należałoby przetestować korzystając z dołączonego do manuala przykładu:

<?php
include('Mail.php');

$recipients = 'bogumil@co-ma-dostac.com';

$headers['From']    = 'marian@co-wyslal.com';
$headers['To']      = 'bogumil@co-ma-dostac.com';
$headers['Subject'] = 'Test message';

$body = 'Test message';

$params['sendmail_path'] = '/usr/sbin/sendmail';

// Create the mail object using the Mail::factory method
$mail_object =& Mail::factory('sendmail', $params);

$msg = $mail_object->send($recipients, $headers, $body);

if ($msg == true) {
 echo '<h3>Wiadomość testową wysłano pomyślnie.</h3>';
} else {
 echo '<h3>Wiadomość nie wysłana!</h3><p>Błąd: ' . $msg . '</p>';
}
?>


Niby wszystko wygląda w porządku, wybrana została metoda wysyłki przy użyciu bezpośrednio sendmail w parametrach została podana prawidłowa ścieżka do sendmaila. Ponadto jest to lekko zmodyfikowany przykład z manuala, tak więc powinien działać prawidłowo.
Mimo wszystko skrypt nie wyświetla informacji o pomyślnej wysyłce, lecz podaje błąd o treści: 
sendmail returned error code 127
.
Dodatkowo w logach serwera Apache pojawia się taki oto błąd:
sh: /sendmail: No such file or directory
.

Wszystko wskazuje na to, że jest to wina włączonego trybu bezpiecznego PHP (safe_mode=on). Szczerze mówiąc nie znalazłem informacji (bo za długo nie szukałem) czemu tak akurat jest i czy da się to jakoś skonfigurować, żeby jednak działało w trybie bezpiecznym. Najszybszym i najłatwiejszym sposobem na pozbycie się tego problemu było wyłączenie trybu safe_mode dla tej domeny, z której uruchamiam powyższy skrypt. Poza tym nie jest mi do niczego potrzebny na moim serwerze.

W pliku php.ini safe_mode jest domyślnie ustawiony na on, tak więc aby zmodyfikować ustawienia dla konkretnej domeny należy edytować plik konfiguracyjny conf/vhost.conf.

<Directory /var/www/vhosts/domenasrutututu.pl/httpdocs>
php_admin_value open_basedir /var/www/vhosts/domenasrutututu.pl/httpdocs/:/tmp/:/usr/share/pear/
php_admin_flag safe_mode off
</Directory>

Następnie pozostaje tylko przeładowanie ustawień:

/usr/local/psa/admin/sbin/websrvmng -u --vhost-name=domenasrutututu.pl

i skrypt powinien już wysyłać maile prawidłowo.

Dodaj komentarz

XHTML: Dozwolone znaczniki: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">