Volledig pad bepalen voor cronjob

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Ariën  -
Beheerder

- Ariën -

25/10/2011 11:48:23
Quote Anchor link
Leuk, ik heb een cronjob die en PHP-script aanroept. In dat PHP-script staan wat includes:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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";

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?
 
PHP hulp

PHP hulp

14/11/2024 07:25:44
 
Ozzie PHP

Ozzie PHP

25/10/2011 12:01:04
Quote Anchor link
Kun je niet gewoon dit doen?

$path = '/bla/bla/bla/public_html/inc/';
include $path . 'config.inc.php';

enz.
 
- Mark -

- Mark -

25/10/2011 12:02:38
Quote Anchor link
Daar kom je niet onderuit denk ik. Hoe moet php het pad van iets bepalen waarvan het niet weet waar het staat?
 
- Ariën  -
Beheerder

- Ariën -

25/10/2011 12:03:00
Quote Anchor link
Mja, maar ik wil het hele volledige pad juist niet in elke cronjob php-file invullen.

- 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 -
 
Kees Schepers

kees Schepers

25/10/2011 12:15:26
Quote Anchor link
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..
 
- Ariën  -
Beheerder

- Ariën -

25/10/2011 12:16:41
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . realpath(__DIR__));
?>

Vanavond eens uittesten, bevindingen laat ik nog wel weten :-)
Gewijzigd op 25/10/2011 12:24:32 door - Ariën -
 
Ozzie PHP

Ozzie PHP

25/10/2011 12:23:45
Quote Anchor link
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
 
- Ariën  -
Beheerder

- Ariën -

25/10/2011 12:25:54
Quote Anchor link
Opgelost, dan zien we vanavond.

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 -
 
- Mark -

- Mark -

25/10/2011 12:40:21
Quote Anchor link
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.
 
- SanThe -

- SanThe -

25/10/2011 13:44:14
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

25/10/2011 16:56:35
Quote Anchor link
- 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?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
cd /www/sites/bla.nl/private_html/ && php /www/sites/bla.nl/cronjob.php
Gewijzigd op 25/10/2011 16:59:21 door - Ariën -
 
- SanThe -

- SanThe -

25/10/2011 17:00:48
Quote Anchor link
- Aar - op 25/10/2011 16:56:35:
Dit kan je toch ook in het cron commando opnemen, i.p.v. een shell-script?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
cd /www/sites/bla.nl/private_html/ && php /www/sites/bla.nl/cronjob.php


Inderdaad, niet aan gedacht.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

25/10/2011 17:06:42
Quote Anchor link
ik gebruik altijd dirname(_FILE_)
 
Niels K

Niels K

05/12/2011 20:34:33
Quote Anchor link
Je kan toch in de bootstrap van je applicatie de constante APPLICATION_PATH zelf aanmaken? Daarnaast kan je ook eens kijken naar chdir.
 
Wouter J

Wouter J

05/12/2011 20:59:45
Quote Anchor link
@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.
 
- Ariën  -
Beheerder

- Ariën -

05/12/2011 21:44:01
Quote Anchor link
Kan ook, maar ik gebruik nog geen MVC-structuur.
De overige opties in dit topic voldoen verder ook.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.