|
Posted by Rik on 06/17/07 16:32
On Sun, 17 Jun 2007 15:59:37 +0200, Vladimir Ghetau
<vladimir@pixeltomorrow.com> wrote:
> On Jun 15, 2:17 pm, berksh...@gmail.com wrote:
>> On Jun 14, 12:51 pm, Vladimir Ghetau <vladi...@pixeltomorrow.com>
>> wrote:
>>
>>
>>
>> > On Jun 14, 3:49 pm, berksh...@gmail.com wrote:
>>
>> > > We recently upgraded php from 4.3.9 to 4.4.7. Everything is working
>> > > well, except the php scripts running as cronjobs. It appears the
>> > > problem is that these scripts utilize the include() function and
>> these
>> > > functions are utilizing relative paths. They worked just fine with
>> > > the old version of php, but not with the new version.
>>
>> > > Anyone know what is causing this hiccup?
>>
>> > > TIA
>>
>> > Try using the server relative path in this case, or check the PHP.ini
>> > and setup some paths in there.
>>
>> > So, instead of
>>
>> > <?php
>>
>> > include ('whatever.php');
>>
>> > ?>
>>
>> > try
>>
>> > <?php
>>
>> > include('server/relative/path/to/the/whatever/file.php');
>>
>> > ?>
>>
>> > Cheers,
>>
>> > Vladimir Ghetau
>>
>> Vladimir,
>>
>> Thanks for th reply. Unfortunately there are quite a few includes,
>> and those includes have includes as well so changing hte include path
>> from relative paths to absolute paths isn't a practical option for us
>> at the momemnt.
>
>
>
>
> Hey B,
>
> How about defining a named constant, let's call it MY_SCRIPT_ROOT,
> that contains the closest path to your script, let's say
>
> <?php
>
> define('MY_SCRIPT_ROOT', '/dev/myscript');
>
>
>
> ?>
>
> and then, all the includes will go like this:
>
>
>
> <?php
>
> // an include for the /dev/myscript/includes/classes/php/
> bingoclass.php
>
>
> include (MY_SCRIPT_ROOT .'/includes/classes/php/bingoclass.php');
>
>
> // an include for /dev/myscript/doit.php
>
> include (MY_SCRIPT_ROOT .'/doit.php');
>
>
> // an include for /dev/myscript/abc/yep.php
>
> include (MY_SCRIPT_ROOT .'abc/yep.php');
>
> ?>
>
>
> This is the best approach when you're dealing with strange paths that
> go on different levels and I'm using it with success.
I assume when using crons, the script doesn't get started in it's
place/dir, but in the one where the cron starts.
A simple:
chdir(dirname(__FILE__));
at the beginning of the script called by the cron should do it, every
relative include would now be indeed relative to it's directory instead of
relative to the cron.
--
Rik Wasmus
Navigation:
[Reply to this message]
|