PDA

Bekijk Volledige Versie : include in PHP Cronjob



Luke B
04/03/08, 14:17
Hallo WHT-ers,

Een klant wil graag via een cronjob een PHP bestand aanroepen. In dat PHP bestand, wordt gebruik gemaakt van de require(); functie.
Dus:
Import.php bevat o.a: require("../includes/common.php");
Import.php openen is dus geen probleem. Open je import.php via de browser, dan werkt het gewoon en wordt er ge-required. Probeer je het bestand dus te openen met cronjob, dan krijg je de error dat ../indcludes/common.php niet bestaat:


Warning: require(../includes/common.php): failed to open stream: No such
file or
directory in
/home/gebruikersnaam/domains/domeinnaam.net/public_html/nederland/contentsystem/s
cripts/import.php
on line 6

Fatal error: require(): Failed opening required '../includes/common.php'
(include_path='.:/root/pear/share/pear') in
/home/gebruikersnaam/domains/domeinnaam.net/public_html/nederland/contentsystem/s
cripts/import.php
on line 6Het vreemde is echter dat er in import.php 4 keer iets required wordt, maar alleen een foutmelding optreed bij common.php, en die bestaat wel echt ;)

common.php bevat ook niet veel spannend, alleen een paar requires (de andere 3 pagina's hebben dat niet).

Weet iemand iets, of heb je meer info nodig? Let me know ;)

Excuses, hij kan alle 4 de bestanden niet vinden

Bob2
04/03/08, 14:24
Probeer ipv ../includes/common.php het gehele path op te geven

Triloxigen
04/03/08, 14:24
Hoe zien de andere includes er uit?

Luke B
04/03/08, 14:25
Probeer ipv ../includes/common.php het gehele path op te geven
Sorry, vergeten te vermelden. Indien je het absolute path neemt, werkt het prima. Dat is echter niet de bedoeling aangezien het systeem in principe 'plug 'n play' moet zijn.


Hoe zien de andere includes er uit?
De andere includes zien er exact hetzelfde uit en komen ook bij dezelfde directory uit. Echter omdat we in 1e instantie require(); gebruikte, kwam die niet verder als de eerste melding. Toen we het met include(); probeerden zagen we dat er daar bij alle 4 een fout optrad.

Triloxigen
04/03/08, 14:30
Je roept het zeker via php zelf aan en niet via http? Dan krijg je dat soort errors idd als je geeh hele path wilt gebruiken.

Luke B
04/03/08, 14:33
Je roept het zeker via php zelf aan en niet via http? Dan krijg je dat soort errors idd als je geeh hele path wilt gebruiken.
Klopt, /usr/local/bin/php, als je dat bedoelt.
Nu je het zegt begint er wel een belletje te rinkelen: moet ik hem via http aanroepen i.p.v. PHP?

Triloxigen
04/03/08, 14:38
Via wget (HTTP) maakt het geheel wel een stuk makkelijk, je hoeft dan geen rekeninjg te houden met andere configuraties etc.

Luke B
04/03/08, 14:40
Via wget (HTTP) maakt het geheel wel een stuk makkelijk, je hoeft dan geen rekeninjg te houden met andere configuraties etc.
Dat schijnt wel weer zwaarder te zijn voor de server hoor ik her en der. Klopt dat? :)

groenleer
04/03/08, 15:23
probeer eens:

require_once(dirname(__FILE__)."../includes/common.php");

Bob2
04/03/08, 15:26
Sorry, vergeten te vermelden. Indien je het absolute path neemt, werkt het prima. Dat is echter niet de bedoeling aangezien het systeem in principe 'plug 'n play' moet zijn.


Php heeft eenvoudige variabelen om het server path te gebruiken.
Dan zou het zoiets worden: include("$_SERVER["DOCUMENT_ROOT"]"."/includes/common.php");

Luke B
04/03/08, 16:02
probeer eens:

require_once(dirname(__FILE__)."../includes/common.php");


Php heeft eenvoudige variabelen om het server path te gebruiken.
Dan zou het zoiets worden: include("$_SERVER["DOCUMENT_ROOT"]"."/includes/common.php");

Ohoh, jullie hebben helemaal gelijk. Ja, je moet er maar net op komen. Bedankt jongens, ik ga het proberen ;)

Triloxigen
04/03/08, 18:50
Dat schijnt wel weer zwaarder te zijn voor de server hoor ik her en der. Klopt dat? :)

Uiteraard is het zwaarder.
Als je het direct doet danis het enkel php die geladen word, maar voa HTTP is het apache, php en alle modules die je ermee laad.
Maar uiteraard niet zwaarder dan iedere andere bezoeker die de website bezoekt.

Luke B
04/03/08, 18:53
Tja, met een Athlonnetje moet je toch daar een beetje op letten :$
Gebruiken nu "require_once(dirname(__FILE__)."/../includes/common.php");" en dat lijkt goed te werken. Bedankt ;)

Freakingme
04/03/08, 21:11
Het is wel een beetje mierenneuqen, maar strict gezien is require geen functie ;)

groenleer
05/03/08, 07:39
Tja, met een Athlonnetje moet je toch daar een beetje op letten :$
Gebruiken nu "require_once(dirname(__FILE__)."/../includes/common.php");" en dat lijkt goed te werken. Bedankt ;)

Inderdaad is er een trailing slash vereist. Excuses hier voor. ;) Maar je hebt hem gevonden.



Het is wel een beetje mierenneuqen, maar strict gezien is require geen functie ;)
Heel strict inderdaad niet, laten we het daarom over de functionaliteit hebben.

Luke B
05/03/08, 07:48
Inderdaad is er een trailing slash vereist. Excuses hier voor. ;) Maar je hebt hem gevonden.

Heel strict inderdaad niet, laten we het daarom over de functionaliteit hebben.
En daar gaat het om :)

Inderdaad, het is geen functie, prima ;)