ID: 35926 Comment by: php-bug-35926 at ryandesign dot com Reported By: jeff95350 at yahoo dot com Status: No Feedback Bug Type: PHP options/info functions Operating System: FreeBSD 5.4 PHP Version: 4.4.1 New Comment:
For --with-config-file-path, you have specified the path to the php.ini file, but ./configure --help explains that you must specify the path to the *directory* in which php.ini can be found. Previous Comments: ------------------------------------------------------------------------ [2006-01-15 01:00:04] php-bugs at lists dot php dot net No feedback was provided for this bug for over a week, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open". ------------------------------------------------------------------------ [2006-01-07 22:56:52] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php5.1-latest.tar.gz For Windows: http://snaps.php.net/win32/php5.1-win32-latest.zip ------------------------------------------------------------------------ [2006-01-07 22:41:29] jeff95350 at yahoo dot com Description: ------------ PHP 4.4.1 seems to behave strangely when looking for the config file. Below I have an example that appears to be contradictory, or at least extremely unintuitive. PHP reports that it is using a certain configuration file, but then ignores the contents. When I specify the configuration file directly, it works fine. While investigating, I also show GDB reporting a corrupted stack. Reproduce code: --------------- $ pwd /home/admin/install $ rm -rf php-4.4.1/ $ tar jxf ../download/php-4.4.1.tar.bz2 $ cd php-4.4.1/ $ ./configure --prefix=/usr/local/admin --with-config-file-path=/usr/local/admin/etc/php.ini --with-config-file-scan-dir=/usr/local/admin/etc/php --with-pgsql --with-mysql --with-curl --with-gd --enable-fastcgi --with-openssl --with-zlib --enable-bcmath --with-bz2 --enable-calendar --enable-dba --with-db4 --with-mhash --with-mcrypt $ make && make install $ grep pgsql.allow_persistent /usr/local/admin/etc/php.ini pgsql.allow_persistent = Off $ /usr/local/admin/bin/php -i | grep Configuration <tr><td class="e">Configuration File (php.ini) Path </td><td class="v">/usr/local/admin/etc/php.ini </td></tr> <h1>Configuration</h1> Notice that php reports that it is using the config file "/usr/local/admin/etc/php.ini", and that that config file has pgsql.allow_persistent = Off. Expected result: ---------------- $ /usr/local/admin/bin/php -i | grep pgsql.allow_persistent <tr><td class="e">pgsql.allow_persistent</td><td class="v">Off</td><td class="v">Off</td></tr> $ /usr/local/admin/bin/php -i \ -c /usr/local/admin/etc/php.ini \ | grep pgsql.allow_persistent <tr><td class="e">pgsql.allow_persistent</td><td class="v">Off</td><td class="v">Off</td></tr> Actual result: -------------- Notice below how pgsql.allow_persistent is On when the config file says it should be Off. $ /usr/local/admin/bin/php -i | grep pgsql.allow_persistent <tr><td class="e">pgsql.allow_persistent</td><td class="v">On</td><td class="v">On</td></tr> Notice below how the config file obviously works. It's really just the php.ini-dist with all of the "allow_persistent" settings turned Off. Below I specify the config file explicitly and it works fine. $ /usr/local/admin/bin/php -i \ -c /usr/local/admin/etc/php.ini \ | grep pgsql.allow_persistent <tr><td class="e">pgsql.allow_persistent</td><td class="v">Off</td><td class="v">Off</td></tr> While investigating the problem, I saw some strange results from gdb: $ gdb /usr/local/admin/bin/php GNU gdb 6.1.1 [FreeBSD] Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-marcel-freebsd"... (gdb) set args "-i" (gdb) break php_init_config Breakpoint 1 at 0x81468b8: file /home/admin/install/php-4.4.1/main/php_ini.c, line 251. (gdb) run Starting program: /usr/local/admin/bin/php "-i" Breakpoint 1, php_init_config () at /home/admin/install/php-4.4.1/main/php_ini.c:251 251 zend_file_handle fh = {0}; (gdb) watch free_ini_search_path Hardware watchpoint 2: free_ini_search_path (gdb) continue Continuing. Hardware watchpoint 2: free_ini_search_path Old value = 0 New value = 1 php_init_config () at /home/admin/install/php-4.4.1/main/php_ini.c:288 288 php_ini_search_path[0] = 0; (gdb) step 295 if (env_location[0]) { (gdb) 315 if (strcmp(sapi_module.name, "cli") != 0) { (gdb) 316 if (*php_ini_search_path) { (gdb) 319 strcat(php_ini_search_path, "."); (gdb) 331 if (sapi_module.executable_location) { (gdb) 332 binary_location = estrdup(sapi_module.executable_location); (gdb) _estrdup (s=0x81bed31 "i-fcgi") at /home/admin/install/php-4.4.1/Zend/zend_alloc.c:360 360 { (gdb) finish Run till exit from #0 _estrdup (s=0x81bed31 "i-fcgi") at /home/admin/install/php-4.4.1/Zend/zend_alloc.c:360 0x08146e94 in php_init_config () at /home/admin/install/php-4.4.1/main/php_ini.c:332 332 binary_location = estrdup(sapi_module.executable_location); Value returned is $1 = 0x822304c "/usr/local/admin/bin/php" (gdb) step 337 if (binary_location) { (gdb) 332 binary_location = estrdup(sapi_module.executable_location); (gdb) 337 if (binary_location) { (gdb) 338 char *separator_location = strrchr(binary_location, DEFAULT_SLASH); (gdb) Error evaluating expression for watchpoint 2 Previous frame identical to this frame (corrupt stack?) Watchpoint 2 deleted. 0x281c7b07 in r_debug_state () from /libexec/ld-elf.so.1 (gdb) It looks like there's some kind of problem there, since gdb says "corrupt stack". I'm not particularly good with gdb, so maybe there's nothing wrong with PHP. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=35926&edit=1