mail: failed to open stream: Permesso negato?
Domanda
ottengo questo avvertimento l'invio di mail con php Attenzione: la posta (1) [function.mail]: failed to open stream: Autorizzazione negata in / home /...
- utilizzando ssmtp e Gmail come smtp
- PHP 5.3.1
- nulla nei log (nessun errore)
- la posta arriva a destinazione
- i permessi dei file sono rwxrxrx
Permesso negato a che cosa?
Anche chiamando qualcosa di semplice come
elettronica ( "mail@domain.com", "oggetto", "corpo");
ho ancora ottenere questo avvertimento
Soluzione 3
Si scopre essere un problemi di autorizzazioni di file, dopo tutto. Ma non negli script, ma nella directory.
Ho fatto funzionare un chmod -R 777 *
e l'avviso di andata. su di un ulteriore esame ho trovato un file chiamato 1
, e questo file conteneva un registro dei messaggi inviati.
L'avvertimento era php che mi diceva che non era in grado di aprire questo file
Soluzione:
sudo chmod -R 755 *
sudo chmod 777 1
F # $% ^% dei messaggi di errore criptico php
Altri suggerimenti
Il problema è che l'utente webserver non è in grado di scrivere e / o leggere il file di log di posta. Per una configurazione propper:
1) creare la cartella e il file per la registrazione e-mail. Ad esempio:
touch /var/log/php5/mail.log
2) impostare il file di log in php.ini:
mail.log = /var/log/php5/mail.log
3) impostare il proprietario e il gruppo per la cartella / file in caso di necessità:
controllare il proprietario e il gruppo con
ls -la /var/log/php5
in caso necessario, cambiare il gruppo (cambio www-data per qualsiasi gruppo del server web è)
sudo chgrp -R www-data /var/log/php5
in caso necessario, cambiare il proprietario (cambio www-data per qualsiasi utente del server web è)
sudo chown -R www-data /var/log/php5
Funziona se si semplificano esso?
$mail_sent = mail('address@domain.com', 'subject', 'message');
Se è così, poi si sa che le opere di posta elettronica.
Dopo di che, vorrei togliere la roba EOL $ e vedere se questo risolve esso. Se no, allora mi rimuovere il blocco di testa e mantenere la rimozione roba fino a quando non inizia a lavorare.