Re: cvs: php-src /main php_ini.c
| From: | Hannes Magnusson | Date: | Wed, 25 Apr 2007 17:47:15 +0000 |
| Subject: | Re: cvs: php-src /main php_ini.c | ||
| References: | 1 2 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-44084@lists.php.net to get a copy of this message | ||
Hi Chris
On 4/25/07, Christopher Jones <christopher.jones@oracle.com> wrote:
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.This patch searches for the location of the php binary, not php.ini. So even if you have php.ini anywhere in $PATH it will not be picked up unless its the location of the binary itself. -Hannes
Chris Hannes Magnusson wrote:bjori Wed Apr 25 10:02:23 2007 UTCModified files:/php-src/main php_ini.cLog: - Don't pick up php.ini from cwd on BSDs - "Resolve" (with the help of $PATH) to /path/to/php and pick upthe php.ini from therehttp://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 @@ #elseif (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, OracleEmail: Christopher.Jones@oracle.com Tel: +1 650 506 8630Blog: http://blogs.oracle.com/opal/