|  | Posted by Steve on 05/18/07 16:51 
i'm trying to re-use scripts, typically called via a browser, in the php cli. the cli calls are made through cron jobs. i'm hitting some unknowns as
 to path info. here's the error i'm getting thus far:
 
 "PHP Warning:  require_once(../../../../../../site.cfg.php): failed to open
 stream: No such file or directory in
 /var/www/html/dev/admin/cli/import.repair.orders.cli.php on line 5"
 
 i'm executing the cli from:
 
 /home/me/www/dev/admin (www is a symlink to /var/www/html/)
 
 first, what is the current directory for php cli when executed from a cron?
 second, will i need to adjust the current directory or anything else so that
 other included/required files (normally accessed via a browser) are
 referenced correctly?
 
 thanks for your input.
 
 
 =======================
 
 here's the pertanent code...
 
 my include path is:
 
 /usr/share/pear
 
 in that directory i have a file named relative.path.php. its purpose is to
 abstract/simplify inclusionary script paths. it looks like:
 
 <?
 $parsedUri        = dirname($_SERVER['PHP_SELF']);
 $parsedUri       .= substr($parsedUri, -1) != '/' ? '/' : '';
 $relativeUri      = str_replace('/', '', $parsedUri);
 $relativePath     = strlen($parsedUri) - strlen($relativeUri) - 1;
 if ($relativePath < 0){ $relativePath = 0; }
 $relativePath     = str_repeat('../', $relativePath);
 if (!$relativePath){ $relativePath = './'; }
 ?>
 
 i'm wrapping the files i'm trying to re-use via cli in code similar to (call
 it, import.financials.cli.php):
 
 #!/usr/bin/php -q
 <?
 $cli = true;
 require_once 'relative.path.php';
 require_once $relativePath        . 'site.cfg.php';
 require_once site::$rootDirectory . 'admin/import.financials.php';
 ?>
 
 the site.cfg.php creates a singleton class 'site' and $rootDirectory would
 be the absolute path to the web root. import.financials.php begins like
 this:
 
 <?
 if (!$cli)
 {
 $pageTitle        = 'Import Financials';
 $fullHeader       = false;
 $securityEnabled  = true;
 require_once 'relative.path.php';
 require_once $relativePath           . 'site.cfg.php';
 require_once site::$includeDirectory . 'head.inc.php';
 }
 ?>
 
 however, as the error indicated, we never get to this point since
 import.financials.cli.php cannot find site.cfg.php (as it normally would if
 called from a browser).
 
 tia,
 
 me
 [Back to original message] |