Avatar billede Slettet bruger
04. maj 2010 - 22:38 Der er 16 kommentarer og
2 løsninger

Mail fra PHP (på udviklings-maskine)

Jeg bøvler lidt med at få PHP på min udviklingsmaskine til at sende mails.
- jeg er ret sikker på at parameterne er korrekte. Alligevel returnerer mail() false : (

Hvordan kan jeg få af vide HVAD der er galt ?

Og ikke mindst: Skal der "konfigges" noget i PHP/Apache/Ubuntu for at enable mail-udsendelse ?
Avatar billede public2 Nybegynder
04. maj 2010 - 22:43 #1
Du siger på udviklings maskine. Mener du så din localhost? I så fald, ja, der skal du opsætte den til at kunne benytte mail.
Avatar billede Slettet bruger
04. maj 2010 - 22:58 #2
localhost præcis. "opsætte" ?


i phpinfo, siger den (ved søgning efter "mail"):

........................................................Local Value.........................Master Value
mail.force_extra_parameters....no value...............................no value
sendmail_from..............................no value...............................no value
sendmail_path............................../usr/sbin/sendmail -t -i......../usr/sbin/sendmail -t -i

Og der findes en sendmail i /usr/sbin
Avatar billede Slettet bruger
04. maj 2010 - 23:02 #3
Hov, der er også en SMTP (i phpinfo) = localhost i begge kolonner
Avatar billede public2 Nybegynder
04. maj 2010 - 23:07 #4
Nu siger du at du bruger Linux, jeg benytter mig selv af WAMP så jeg er på en windows, men det jeg har gjort er i min php.ini fil, er der nogle felter der under afsnittet [mail function] der hedder:

SMTP = xxx
og
smtp_post = xx

Der er også et felt til din afsender adresse hvis du vil benytte sådan en kaldet:

sendmail_from = xxx@xxx.xx

Det jeg har sat i min er, under SMTP har jeg brugt min almindelige SMTP adresse som jeg bruger i min outlook. Den får du fra din ISP. Min port er sat til 25.

Sendmail_from har jeg sat til min default mail adresse, men plejer at specificere den i min PHP kode så den behøves egentlig ikke.

Det er jo nok anderledes på en Linux maskine og hvis det er, ja så må jeg være lidt svar skyldig, men prøv at kigge på php.net/sendmail-path som er for Unix versioner.
Avatar billede public2 Nybegynder
04. maj 2010 - 23:08 #5
Ved mindre du har en SMTP server på din localhost maskine, så kan du ikke benytte localhost som SMTP adresse i din php.ini konfiguration.
Avatar billede Slettet bruger
04. maj 2010 - 23:13 #6
Ja, det er tilsyneladende forskelligt for windows og Linux..

I desparation spurgte jeg Google:
Ét sted læste jeg at Linux bruger "sendmail" ikke SMTP
Og denne:
http://www.blog.highub.com/javascript/javascript-core/make-ubuntu-php-localhost-mail-function-work/
- Men synes det ser lidt "voldsomt" ud...

Jeg vil lige kigge i min php.ini om der skulle være nogle tips dér : )
Avatar billede public2 Nybegynder
04. maj 2010 - 23:27 #7
Den URL du henviser til benytter et PHP framework der hedder PEAR, så det kan være derfor det virker lidt mere uoverskueligt. Det er et "OO" PHP framework.

Men her er hvad jeg fandt efter en google søgning med mail i Linux fra Apache og PHP:

[mail function]
; Setup for Linux systems
sendmail_path = /usr/sbin/sendmail -t
sendmail_from = me@myserver.com

Læs evt. mere om det her:
http://goo.gl/vNUZ
Avatar billede Slettet bruger
04. maj 2010 - 23:53 #8
Ja, det PEAR er sikker helt fint - men jeg foretrækker så "clean" et system som muligt..

Har prøvet at specificere sendmail_path
/usr/sbin/sendmail -t -i
/usr/sbin/sendmail -i -t
/usr/sbin/sendmail -t

med og uden specificeret sendmail_from

OG genstartet Apache hvergang
- Den returnerer fortsat false : (

Men måske dette har betydning - når Apache starter op kommer disse 3 linjer:

* Restarting web server apache2

apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName



Men jeg har en hosts linje som sætter localhost.xxx.dk = 127.0.0.1
Så jeg tilgår den (med browseren) på localhost.xxx.dk
- gad vide om dét er et problem ?
Avatar billede Slettet bruger
05. maj 2010 - 00:15 #9
Næh.. Dét kurreredes med linjen:
ServerName = localhost.xxx.dk
i /etc/apache2/httpd.conf
Avatar billede Slettet bruger
05. maj 2010 - 00:17 #10
Men mail() returnerer stadig false (og sender ikke)

Kan man se mere info om fejlen et sted (en log-fil somewhere..) ?
Avatar billede Slettet bruger
05. maj 2010 - 01:26 #11
GOT it - ikke helt ligetil.
Og da jeg benytter en helt straight Ubuntu-installation, fortsætter jeg denne saga, da andre må have de samme problemer (hvis der er nogen retfærdighed til):

Det viste at jeg slet ikke HAR sendmail installeret - men "postfix" i stedet - de er forskellige MTA'er.
- Det er dog samme funktion i PHP: mail

I loggen: /var/log/syslog oprettedes denne linje når jeg forsøgte at sende en mail:

May  5 00:34:06 Spand postfix/sendmail[10407]: fatal: open /etc/postfix/main.cf: No such file or directory

dén fil findes faktisk - men... postfix kunne ikke se den. Uvidst af hvilken grund..

Lang historie: https://bugs.launchpad.net/ubuntu/+source/postfix/+bug/42947

Sidste indlæg: touch /etc/postfix/main.cf
Eller rettere: sudo touch /etc/postfix/main.cf

genstart af apache

og... Nu sender den sgu (ifølge php)
- men mails når aldrig frem... suk...

Ny fejl i syslog:
May  5 00:45:44 Spand postfix/postdrop[10539]: warning: unable to look up public/pickup: No such file or directory

Hvilket er linuxsk for at der skal oprettes en fifo-kø-fætter i /var/spool/postfix/public ved navn pickup

Hvilket kan gøres med shell (som "superuser"): sudo sh
# mkfifo /var/spool/postfix/public/pickup

Derefter skal postfix genstartes:

# /etc/init.d/postfix restart

Prøve igen... pleeeaaase...

Tadaa: Mailen sendes....  OG når frem !
Avatar billede Slettet bruger
05. maj 2010 - 01:30 #12
Att: public2
Jeg synes du har fortjent halvdelen af point'ene - for den gode vilje!
Selvom Linux og Windows åbenbart er HELT forskellige på dette punkt.
- så smid et svar, også, ikk'
Avatar billede Slettet bruger
05. maj 2010 - 01:37 #13
At sendmail ikke var installeret er lidt mystisk, for den findes i /etc/sbin
- men Synaptic Package Manager påstår at den ikke er installeret... jaja, whatever

Når bare det virker - og lige til Daily Show tiden : )
Avatar billede showsource Seniormester
05. maj 2010 - 02:06 #14
Den nemme løsning er at bruge phpmailer:
http://phpmailer.sourceforge.net
Avatar billede Slettet bruger
05. maj 2010 - 02:59 #15
Ikkenikkenej showsource
- Nu har jeg jo lige netop fået det til at spille - uden fremmed kode!
Avatar billede showsource Seniormester
05. maj 2010 - 07:43 #16
Jow, sow, selvfølgelig :O)
Og hvis det er en bærbar man har med rundt, skal man hele tiden skifte smtp server.
Avatar billede showsource Seniormester
05. maj 2010 - 07:44 #17
Mere fordi jeg engang selv havde problemet, og ved at bruge phpmailer blev det nemt løst.
Avatar billede public2 Nybegynder
05. maj 2010 - 07:45 #18
Det var godt at du fik det til at virke, ja det undre jo ingen at der er stor forskel på Linux og Windows i deres måde at klare noget som helst på :-)

Jeg takker mange gange for pointene og du får lige et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester