Re: cvs: php-src /main php_ini.c

From: Date: Wed, 25 Apr 2007 17:13:53 +0000
Subject: Re: cvs: php-src /main php_ini.c
References: 1  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-44083@lists.php.net to get a copy of this message
Instead of overloading PATH can we use a PHP-specific environment variable? I can't think of a reason why I'd put my php.ini in the same directory as any executables other than perhaps where the php CLI executable is. Chris Hannes Magnusson wrote:
bjori Wed Apr 25 10:02:23 2007 UTC
  Modified files:                  /php-src/main	php_ini.c   Log:
- Don't pick up php.ini from cwd on BSDs - "Resolve" (with the help of $PATH) to /path/to/php and pick up the php.ini from there http://cvs.php.net/viewvc.cgi/php-src/main/php_ini.c?r1=1.149&r2=1.150&diff_format=u Index: php-src/main/php_ini.c diff -u php-src/main/php_ini.c:1.149 php-src/main/php_ini.c:1.150 --- php-src/main/php_ini.c:1.149 Mon Apr 16 09:43:52 2007 +++ php-src/main/php_ini.c Wed Apr 25 10:02:23 2007 @@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
*/ -/* $Id: php_ini.c,v 1.149 2007/04/16 09:43:52 dmitry Exp $ */ +/* $Id: php_ini.c,v 1.150 2007/04/25 10:02:23 bjori Exp $ */ #include "php.h" #include "ext/standard/info.h" @@ -351,7 +351,26 @@ #else if (sapi_module.executable_location) { binary_location = (char *)emalloc(PATH_MAX); - if (!realpath(sapi_module.executable_location, binary_location)) { + if (!strchr(sapi_module.executable_location, '/')) { + char *path; + int found = 0; + + if ((path = getenv("PATH")) != NULL) { + char *search_dir, search_path[MAXPATHLEN]; + + while ((search_dir = strsep(&path, ":")) != NULL) { + snprintf(search_path, MAXPATHLEN, "%s/%s", search_dir, sapi_module.executable_location); + if (VCWD_REALPATH(search_path, binary_location) && !VCWD_ACCESS(binary_location, X_OK)) { + found = 1; + break; + } + } + } + if (!found) { + efree(binary_location); + binary_location = NULL; + } + } else if (!VCWD_REALPATH(sapi_module.executable_location, binary_location) || VCWD_ACCESS(binary_location, X_OK)) { efree(binary_location); binary_location = NULL; }
-- Christopher Jones, Oracle Email: Christopher.Jones@oracle.com Tel: +1 650 506 8630 Blog: http://blogs.oracle.com/opal/

« previous php.cvs (#44083) next »