Volledig pad bepalen voor cronjob
Leuk, ik heb een cronjob die en PHP-script aanroept. In dat PHP-script staan wat includes:
Nu moet ik dus het hele volledige pad gebruiken in de include(), anders zullen de bestanden niet geincludeerd kunnen worden (cronjobs draaien onder een andere locatie blijkbaar). Hoe kan ik dit veranderen zodat ik niet steeds het hele volledige pad hoef te gebruiken? $_SERVER['DOCUMENT_ROOT'] is ook geen optie.
Wat dan wel?
Code (php)
1
2
3
2
3
include "/bla/bla/bla/public_html/inc/config.inc.php";
include "/bla/bla/bla/public_html/inc/functions.inc.php";
include "/bla/bla/bla/public_html/inc/database.inc.php";
include "/bla/bla/bla/public_html/inc/functions.inc.php";
include "/bla/bla/bla/public_html/inc/database.inc.php";
Nu moet ik dus het hele volledige pad gebruiken in de include(), anders zullen de bestanden niet geincludeerd kunnen worden (cronjobs draaien onder een andere locatie blijkbaar). Hoe kan ik dit veranderen zodat ik niet steeds het hele volledige pad hoef te gebruiken? $_SERVER['DOCUMENT_ROOT'] is ook geen optie.
Wat dan wel?
Kun je niet gewoon dit doen?
$path = '/bla/bla/bla/public_html/inc/';
include $path . 'config.inc.php';
enz.
$path = '/bla/bla/bla/public_html/inc/';
include $path . 'config.inc.php';
enz.
Daar kom je niet onderuit denk ik. Hoe moet php het pad van iets bepalen waarvan het niet weet waar het staat?
Mja, maar ik wil het hele volledige pad juist niet in elke cronjob php-file invullen.
Misschien dat er een tof truukje is? Er zijn vast wel meer mensen op dit forum die cronjobjes gebruiken, en ook hier tegenaan liepen.
Het lijkt mij erg hinderlijk als je van hosting verhuist, en je moet het volledige pad steeds aanpassen.
- Mark - op 25/10/2011 12:02:38:
Daar kom je niet onderuit denk ik. Hoe moet php het pad van iets bepalen waarvan het niet weet waar het staat?
Misschien dat er een tof truukje is? Er zijn vast wel meer mensen op dit forum die cronjobjes gebruiken, en ook hier tegenaan liepen.
Het lijkt mij erg hinderlijk als je van hosting verhuist, en je moet het volledige pad steeds aanpassen.
Gewijzigd op 25/10/2011 12:07:37 door - Ariën -
Als je Zend Framework gebruikt bijvoorbeeld dan wordt dezelfde code gebruikt om cronjobs uit te voeren als gewoon HTTP requests. In een Zend Framework project heb je altijd een constante APPLICATION_PATH die verwijst naar waar de applicatie staat. Dit kun je dus gebruiken door je hele applicatie heen. Als je dan van host veranderd hoef je maar een configuratie ding aan te passen en is het gefixed.
Maar waarschijnlijk gebruik jij geen Zend Framework en een los script dus en dan wordt het toch lastig..
Maar waarschijnlijk gebruik jij geen Zend Framework en een los script dus en dan wordt het toch lastig..
Kees Schepers op 25/10/2011 12:15:26:
Maar waarschijnlijk gebruik jij geen Zend Framework en een los script dus en dan wordt het toch lastig..
correct...
is er echt geen oplossing voor? Desnoods misschien met bash ofzo.
Ik heb dus een eigen CMS, en zit te denken aan een mogelijkheid voor een cronjob om dingen op te ruimen, optimaliseren etc, en daarbij is het voor een gebruiker niet te doen om steeds het volledige pad te bepalen als ze van hosting veranderen, omdat ik ook beginners heb die dat niet snappen.
Ej, wauw...
Voglens de heren op GoT zou dit moeten werken:
Vanavond eens uittesten, bevindingen laat ik nog wel weten :-)
Gewijzigd op 25/10/2011 12:24:32 door - Ariën -
Misschien bij de installatie het volledige pad uitlezen en dan "instructies" geven aan de gebruiker.
Dus stel het volledige pad is:
/bla/bla/bla/public_html/inc/
Dan toon je op het scherm zoiets als:
Kopieer en plak de onderstaande code in de cronjob:
$path = '/bla/bla/bla/public_html/inc/';
include $path . 'config.inc.php';
enz.
enz.
Toevoeging op 25/10/2011 12:24:16:
oh het is al opgelost zie ik
Dus stel het volledige pad is:
/bla/bla/bla/public_html/inc/
Dan toon je op het scherm zoiets als:
Kopieer en plak de onderstaande code in de cronjob:
$path = '/bla/bla/bla/public_html/inc/';
include $path . 'config.inc.php';
enz.
enz.
Toevoeging op 25/10/2011 12:24:16:
oh het is al opgelost zie ik
Opgelost, dan zien we vanavond.
Zou anders wel kunnen, maar ik zie nog best wel een paar gebruikers de boel in Word alles aanpassen :+ :x
Eerst maar bovenstaande oplossing uittesten ;-)
Ozzie PHP op 25/10/2011 12:23:45:
Misschien bij de installatie het volledige pad uitlezen en dan "instructies" geven aan de gebruiker.
Zou anders wel kunnen, maar ik zie nog best wel een paar gebruikers de boel in Word alles aanpassen :+ :x
Eerst maar bovenstaande oplossing uittesten ;-)
Gewijzigd op 25/10/2011 12:26:55 door - Ariën -
Die oplossing van GoT zal wel alleen maar werken als alles op 1 server draait of niet? Ik weet niet hoe een cronjobs systeem in elkaar steekt maar als de webhost een aparte server heeft die het cronjobs systeem host dan werkt het niet meer zou ik zeggen.
:p wel weer wat nieuws geleerd want daar zou ik dus niet zijn opgekomen.
:p wel weer wat nieuws geleerd want daar zou ik dus niet zijn opgekomen.
Geen php aanroepen met de cronjob, maar een zelf geschreven shellscript. In dat shellscript eerst een cd (change directory) naar de plaats waar het php bestand staat. Dan met het script php starten.
- Mark - op 25/10/2011 12:40:21:
maar als de webhost een aparte server heeft die het cronjobs systeem host dan werkt het niet meer zou ik zeggen.
Dat is nieuw voor mij.
- SanThe - op 25/10/2011 13:44:14:
Geen php aanroepen met de cronjob, maar een zelf geschreven shellscript. In dat shellscript eerst een cd (change directory) naar de plaats waar het php bestand staat. Dan met het script php starten.
Dit kan je toch ook in het cron commando opnemen, i.p.v. een shell-script?
Gewijzigd op 25/10/2011 16:59:21 door - Ariën -
- Aar - op 25/10/2011 16:56:35:
Inderdaad, niet aan gedacht.
ik gebruik altijd dirname(_FILE_)
Je kan toch in de bootstrap van je applicatie de constante APPLICATION_PATH zelf aanmaken? Daarnaast kan je ook eens kijken naar chdir.
@niels, je kan denk ik dan beter gebruik maken van getcwd.
Toevoeging op 05/12/2011 20:59:46:
@niels, je kan denk ik dan beter gebruik maken van getcwd.
Toevoeging op 05/12/2011 20:59:46:
@niels, je kan denk ik dan beter gebruik maken van getcwd.
Kan ook, maar ik gebruik nog geen MVC-structuur.
De overige opties in dit topic voldoen verder ook.
De overige opties in dit topic voldoen verder ook.




