[sendmail] sendmail op fedora werkt niet met cron

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • webinn
  • Registratie: Oktober 2002
  • Laatst online: 06-06 12:44
Op mijn virtual private server waar Fedora Core 6 op draait gebruik ik "PHPMailer" om emails te versturen. Deze verstuur ik via sendmail en dat werkt prima.

Wanneer ik echter mijn mailscript uit wil voeren via een cronjob, dan krijg ik steeds volgende error:
code:
1
sh: /sendmail: No such file or directory


Dit ondanks het feit dat ik het pad van sendmail al juist heb ingesteld op
code:
1
/var/qmail/bin/sendmail

(want het werkt immers vanuit een browser)

Heel wat googelen heeft me opgeverd dat PHP soms zijn PATH niet juist instelt, echter als ik een phpinfo in mijn console uitvoer krijg ik:
code:
1
_ENV["PATH"] => /usr/kerberos/sbin:/usr/kerberos/bin://sbin://bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

wat mij juist lijkt. De document root zet ik zelf goed aangezien deze leegt blijft.

Voor de rest zie ik op google vooral veel vragen maar weinig antwoorden...

Kan iemand mij helpen?

Acties:
  • 0 Henk 'm!

  • webinn
  • Registratie: Oktober 2002
  • Laatst online: 06-06 12:44
*bump*

Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 10:54

TommyGun

Stik er maar in!

Hoe ziet je cronjob eruit?

“In a world without walls and fences, who needs Windows and Gates".


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 11-09 13:55
Onder welke user draai je die cron?

Die _ENV[PATH] heb je waarschijnlijk bekeken in je browser, en draaide PHP onder je Apache user. En via Apache had je dan ook geen problemen met sendmail.

Die cron draai je waarschijnlijk onder een guest of ander account met een ander PATH.

Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 10:54

TommyGun

Stik er maar in!

frickY schreef op dinsdag 13 april 2010 @ 08:28:
Onder welke user draai je die cron?

Die _ENV[PATH] heb je waarschijnlijk bekeken in je browser, en draaide PHP onder je Apache user. En via Apache had je dan ook geen problemen met sendmail.

Die cron draai je waarschijnlijk onder een guest of ander account met een ander PATH.
Precies. Desnoods probeer het volledige path (dus var/qmail/bin/sendmail) in de cron. Moet de betreffende user er wel rechten hebben...

“In a world without walls and fences, who needs Windows and Gates".


Acties:
  • 0 Henk 'm!

  • webinn
  • Registratie: Oktober 2002
  • Laatst online: 06-06 12:44
Bedankt voor de reacties tot nu toe. Om even te testen heb ik de cronjob als root laten draaien, jammer genoeg zelfde probleem:
code:
1
sh: /sendmail: No such file or directory


De cronjob ziet er als volgt uit:
code:
1
*/15    *       *       *       *       php -q  /var/www/vhosts/SITE/httpdocs/MAPJE/cron.php


Wat betreft _ENV[PATH], die heb ik bekeken in mijn console wanneer ik als root was ingelogd.


Edit:
Ook wanneer ik manueel dit doe in cron.php:
code:
1
2
$_SERVER['PATH'] = '/sbin:/usr/sbin:/bin:/usr/bin';
$_ENV["PATH"] = '/sbin:/usr/sbin:/bin:/usr/bin';


krijg ik nog steeds dezelfde foutmelding

[ Voor 20% gewijzigd door webinn op 13-04-2010 10:17 ]


Acties:
  • 0 Henk 'm!

  • webinn
  • Registratie: Oktober 2002
  • Laatst online: 06-06 12:44
*nog is een subtiele bump*

Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 10:54

TommyGun

Stik er maar in!

Mis ik iets of heb je /var/qmail/bin/ niet in je PATH?

Maar blijkbaar doet je cronjob het wel? Je roept een PHP script aan, en deze zal op zijn beurt SendMail weer aanroepen? Dus wellicht dat je het e.e.a moet wijzigen in het betreffende script.

“In a world without walls and fences, who needs Windows and Gates".


Acties:
  • 0 Henk 'm!

  • webinn
  • Registratie: Oktober 2002
  • Laatst online: 06-06 12:44
ook

code:
1
2
$_SERVER['PATH'] = '/sbin:/usr/sbin:/bin:/usr/bin:/var/qmail/bin';
$_ENV["PATH"] = '/sbin:/usr/sbin:/bin:/usr/bin:/var/qmail/bin';


of

code:
1
2
$_SERVER['PATH'] = '/sbin:/usr/sbin:/bin:/usr/bin:/var/qmail/bin/';
$_ENV["PATH"] = '/sbin:/usr/sbin:/bin:/usr/bin:/var/qmail/bin/';


instellen bovenaan het bestand cron.php geeft geen effect

De foutmelding blijft:
code:
1
2
Cron <...> php -q  /var/www/vhosts/SITE/httpdocs/MAPJE/cron.php
sh: /sendmail: No such file or directory

Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 10:54

TommyGun

Stik er maar in!

Waar en hoe in dat script wordt /sendmail aangeroepen?

“In a world without walls and fences, who needs Windows and Gates".


Acties:
  • 0 Henk 'm!

  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
Dingen die je vanuit cron start, krijgen niet de hele environment mee, dus je $PATH is niet (of niet goed) gevuld.

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


Acties:
  • 0 Henk 'm!

  • webinn
  • Registratie: Oktober 2002
  • Laatst online: 06-06 12:44
u_nix_we_all schreef op donderdag 15 april 2010 @ 13:55:
Dingen die je vanuit cron start, krijgen niet de hele environment mee, dus je $PATH is niet (of niet goed) gevuld.
om $PATH juist in te stellen, is het dan voldoende om enkel $_SERVER['PATH'] en $_ENV['PATH'] te veranderen of mis ik iets?
TommyGun schreef op donderdag 15 april 2010 @ 13:51:
Waar en hoe in dat script wordt /sendmail aangeroepen?
code fragment:
code:
1
2
3
4
5
6
7
8
9
$this->Sendmail = '/var/qmail/bin/sendmail';

...

$sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail));
popen($sendmail, 'w')
fputs($mail, $header);
fputs($mail, $body);
$result = pclose($mail);

[ Voor 37% gewijzigd door webinn op 15-04-2010 16:41 ]


Acties:
  • 0 Henk 'm!

  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
webinn schreef op donderdag 15 april 2010 @ 16:38:
[...]


om $PATH juist in te stellen, is het dan voldoende om enkel $_SERVER['PATH'] en $_ENV['PATH'] te veranderen of mis ik iets?
Die $_SERVER['PATH'] en $_ENV['PATH'] zeggen mij niets, dus dat weet ik niet. Maar waarschijnlijk kun je het beste de volledige paden gebruiken bij elke aanroep van executables, dat is soms makkelijker dan je $PATH juist in te stellen :P
Ook omdat ik zie dat er een melding
code:
1
sh: /sendmail: no such file

komt, en dan met name de / aan het begin, twijfel ik zelfs of het met een goed gevulde $PATH wil gaan werken.

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


Acties:
  • 0 Henk 'm!

  • webinn
  • Registratie: Oktober 2002
  • Laatst online: 06-06 12:44
het rare is dat ik dat doe. Zie code fragment boven je... ik snap dus niet waar die foutmelding vandaan blijft komen

Acties:
  • 0 Henk 'm!

  • webinn
  • Registratie: Oktober 2002
  • Laatst online: 06-06 12:44
na heel wat getest geen oplossing gevonden.

Mijn workaround is dat ik ipv php te executen op de command line een wget doe van het bestand dat ik wil aanspreken. Zo werkt sendmail wel perfect...

Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 10:54

TommyGun

Stik er maar in!

Aparte workaround zeg, sowieso vreemd probleem...

“In a world without walls and fences, who needs Windows and Gates".

Pagina: 1