Hello.
Here is a patch for the command-line version of PHP which makes it chdir()
to the
script directory just like the web version of PHP does. It also implements
the -C
option which has been a NOOP up to now.
diff -ruN php5-200308051930.orig/sapi/cli/php_cli.c
php5-200308051930/sapi/cli/php_cli.c
--- php5-200308051930.orig/sapi/cli/php_cli.c 2003-08-01
17:08:26.000000000 +0000
+++ php5-200308051930/sapi/cli/php_cli.c 2003-08-05
23:39:38.000000000 +0000
@@ -360,6 +360,7 @@
" %s [options] -- [args...]\n"
"\n"
" -a Run interactively\n"
-
" -C Don't chdir to the
script directory\n"
" -c <path>|<file> Look for php.ini file in
this directory\n"
" -n No php.ini file will be
used\n"
" -d foo[=bar] Define INI entry foo
with value 'bar'\n"
@@ -527,6 +528,8 @@
const char *param_error=NULL;
int scan_input = 0;
int hide_argv = 0;
-
int no_chdir=0; -
char *new_cwd;
/* end of temporary locals */
#ifdef ZTS
zend_compiler_globals *compiler_globals;
@@ -685,7 +688,7 @@
break;
case 'C': /* don't chdir to the script directory */
-
/* This is default so NOP */
-
no_chdir = 1; break; case 'd': /* define ini entries on command line */ define_command_line_ini_entry(optarg);
@@ -902,6 +905,12 @@
zend_llist_destroy(&global_vars);
PG(during_request_startup) = 0;
-
if (!no_chdir && strcmp(file_handle.filename, "-")) { -
new_cwd = strdup(file_handle.filename); -
php_dirname(new_cwd, strlen(new_cwd)); -
chdir(new_cwd); -
free(new_cwd); -
} switch (behavior) { case PHP_MODE_STANDARD: if (strcmp(file_handle.filename, "-")) {