op de contact pagina van website krijg ik de volgende waarschuwing als het formulier word verstuurd:

Warning: mail(/var/log/php.log): failed to open stream: Permission denied in /home/httpd/vhosts/harmonyrooms.gr/private/includes/classes/Controller/Page.php on line 132

Het formulier wordt wel gewoon verzonden!!!

Op lijn 132 van Page.php heb ik een gewone PHP mail functie:


$sending   = mail ($to, $subject, $message->render(), $headers);


Op deze server heb ik geen toegang tot /var/log/php.log dus ik kan de permissies niet veranderen. Wat voor andere optie heb ik zodat deze waarschuwing niet meer verschijnt
wat staat er op regel 132 van Controller/Page.php

ik heb het idee dat je daar zelf een eigen log file probeert te maken.
@Ivo: Volgens mij is het meer een serverbeheerder-gerelateerd probleem. De standaard mail()-functie lijkt een log te plaatsen op een plek waar de gebruiker niet bij kan. Dat is naar mij idee wel opmerkelijk.

Je kan het hopelijk wel zelf overrulen met dit, voordat je de mail stuurt met de mailfunctie:

ini_set('mail.log','/home/httpd/vhosts/harmonyrooms.gr/logs/mail.log');
Dit kan je mogelijk ook globaal in stellen in je php.ini of .htaccess.

Zorg ervoor dat het pad wel bestaat. ;-)
google op het eerste deel van de foutmelding levert wat hits op.

Mogelijk kun je daar iets mee (in combi met welk pakket je eigenlijk gebruikt)
Ivo P op 27/02/2017 12:53:11

google op het eerste deel van de foutmelding levert wat hits op.



Op deze server heb ik geen toegang tot /var/log/php.log dus ik kan de permissies niet veranderen.

Maar de topicstarter kan er zelf weinig aan doen dan. Tenzij die de mail.log overschrijft met een eigen, voor hem bereikbaar, pad.
Ivo P op 27/02/2017 11:25:44

wat staat er op regel 132 van Controller/Page.php

ik heb het idee dat je daar zelf een eigen log file probeert te maken.


De PHP mail functie staat op 132

$sending   = mail ($to, $subject, $message->render(), $headers);
Daar is niks mis mee, maar intern wil deze blijkbaar een log maken (een functie binnen PHP zelf) terwijld aar geen rechten voor zijn.
Ivo P op 27/02/2017 12:53:11

google op het eerste deel van de foutmelding levert wat hits op.

Mogelijk kun je daar iets mee (in combi met welk pakket je eigenlijk gebruikt)


Dar kon ik inderdaad wat mee!!!

ik heb

$sending   = mail ($to, $subject, $message->render(), $headers);


verandert in

if (!ini_get("safe_mode")) $sending = @mail($to, $subject, $message->render(), $headers);


en dat werkt prima. Dank allen voor de input
Huh? Werkt safe_mode nog? Ik dacht dat dat er al jaren uitgesloopt was?
De vraag is alleen of fouten nog wel gelogd worden? Ik heb meer het idee dat je die nu onderdrukt.
die safe mode zal niet bestaan, en daarmee zal hij inderdaad met die @ ervoor mail() aanroepen.

En dus onderdruk je de foutmelding.
Dus melding weg, maar je logt ook niets meer.

Blijft wel de vraag waarom mail (of php) naar die file wil loggen.

Je onderdrukt dus het symptoom, maar lost het probleem niet op.

Reageren