ID: 48744 User updated by: tom at ideaweb dot de Reported By: tom at ideaweb dot de -Status: Feedback +Status: Open Bug Type: Safe Mode/open_basedir Operating System: Linux Debian Etch PHP Version: 5.3.0 New Comment:
I installed php5.3-200908010830: with the "prefix" directory php_admin_value open_basedir /var/www/ecolint.ch/dev:/var/www/ecolint.ch/tmp:/var/www/ecolint.ch/my sql:/www/prog/php everything works as expected, but without it php_admin_value open_basedir /www/htdocs/ecolint.ch/dev:/www/htdocs/ecolint.ch/tmp:/www/htdocs/ecol int.ch/mysql it crashes again: (gdb) run -X Starting program: /www/apache/2.2.11/bin/httpd -X Failed to read a valid object file image from memory. [Thread debugging using libthread_db enabled] [New Thread -1213593920 (LWP 22640)] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1213593920 (LWP 22640)] 0xb74bf52b in OnUpdateBaseDir (entry=0x824fb10, new_value=0x84d3ce8 "/www/htdocs/ecolint.ch/dev:/www/htdocs/ecolint.ch/tmp:/www/htdocs/eco lint.ch/mysql", new_value_length=82, mh_arg1=0x48, mh_arg2=0xb7a9eee0, mh_arg3=0x0, stage=4) at /www/src/php5.3-200908010830/main/fopen_wrappers.c:103 103 if (!*p || !**p) { (gdb) bt #0 0xb74bf52b in OnUpdateBaseDir (entry=0x824fb10, new_value=0x84d3ce8 "/www/htdocs/ecolint.ch/dev:/www/htdocs/ecolint.ch/tmp:/www/htdocs/eco lint.ch/mysql", new_value_length=82, mh_arg1=0x48, mh_arg2=0xb7a9eee0, mh_arg3=0x0, stage=4) at /www/src/php5.3-200908010830/main/fopen_wrappers.c:103 #1 0xb753bb45 in zend_alter_ini_entry_ex (name=0x819a7a0 "open_basedir", name_length=13, new_value=0x81fad60 "/www/htdocs/ecolint.ch/dev:/www/htdocs/ecolint.ch/tmp:/www/htdocs/eco lint.ch/mysql", new_value_length=82, modify_type=4, stage=4, force_change=0) at /www/src/php5.3-200908010830/Zend/zend_ini.c:291 #2 0xb753b94b in zend_alter_ini_entry (name=0x819a7a0 "open_basedir", name_length=13, new_value=0x81fad60 "/www/htdocs/ecolint.ch/dev:/www/htdocs/ecolint.ch/tmp:/www/htdocs/eco lint.ch/mysql", new_value_length=82, modify_type=4, stage=4) at /www/src/php5.3- 200908010830/Zend/zend_ini.c:249 #3 0xb75ed4fe in apply_config (dummy=0x81fb3e8) at /www/src/php5.3- 200908010830/sapi/apache2handler/apache_config.c:197 #4 0xb75ec8bb in php_handler (r=0x8384c18) at /www/src/php5.3- 200908010830/sapi/apache2handler/sapi_apache2.c:547 #5 0x0807dad7 in ap_run_handler (r=0x8384c18) at config.c:157 #6 0x08080bc7 in ap_invoke_handler (r=0x8384c18) at config.c:372 #7 0x080c84da in ap_internal_redirect (new_uri=0x8384be8 "/index.php/contacts/form_contacts_browse/1?", r=0x837fee0) at http_request.c:501 #8 0x080f3f41 in handler_redirect (r=0x837fee0) at mod_rewrite.c:4801 #9 0x0807dad7 in ap_run_handler (r=0x837fee0) at config.c:157 #10 0x08080bc7 in ap_invoke_handler (r=0x837fee0) at config.c:372 #11 0x080c8658 in ap_process_request (r=0x837fee0) at http_request.c:282 #12 0x080c581e in ap_process_http_connection (c=0x836fdf0) at http_core.c:190 #13 0x08084a87 in ap_run_process_connection (c=0x836fdf0) at connection.c:43 #14 0x080f846d in child_main (child_num_arg=<value optimized out>) at prefork.c:650 #15 0x080f86a5 in make_child (s=0x813d648, slot=0) at prefork.c:690 #16 0x080f944c in ap_mpm_run (_pconf=0x81380a8, plog=0x8188328, s=0x813d648) at prefork.c:966 #17 0x0806b44f in main (argc=135487648, argv=0x836dc10) at main.c:740 the strange output (bug #48880) i will check later.... Previous Comments: ------------------------------------------------------------------------ [2009-07-31 23:05:06] j...@php.net Please try using this snapshot: http://snaps.php.net/php5.3-latest.tar.gz For Windows: http://windows.php.net/snapshots/ This is most likely fixed now. See also bug #48880 ------------------------------------------------------------------------ [2009-07-31 16:52:49] tom at ideaweb dot de Maybe i'm wrong, if add the "prefix" path where php is installed to open_basedir directive, the segmentation fault and the strange "unicode" outputs are gone on all my machines (linux+osx) ./configure \ --prefix=/www/prog/php/5.3.0 \ php_admin_value open_basedir /www/htdocs/ecolint.ch/dev:/www/htdocs/ecolint.ch/tmp:/www/htdocs/ecol int.ch/mysql:/www/prog/php but... it should be confirmed by others! =)) ------------------------------------------------------------------------ [2009-07-31 15:54:07] tom at ideaweb dot de My problem is, currently its only the first linux server with running php53. Other server needs several modules like ionCube which seems to be not working with, maybe not compatible/supported by the vendor. But i tried it with one server... iconCube will be loaded, but php53 throws a lot of errors if open_basedir is enabled. I got errors that iconcube is not in allowed path. A module in "not allowed path"? For ex. i defined 3 entries for open_basedir like /var/www:/var/tmp:/var/upload and i get 3 errors that /var/www/iconcube.so, /var/tmp/iconcube.so etc. is not in allowed path. Thats why currently i cannot check the issue with the segmentation fault. Otherwise i "found" a simple server with a lot of wordpress blogs and i installed php53. With open_basedir enabled 70% of requests throw an HTTP 500 (not segmentation fault), but without open_basedir the server runs smoothly, realy strange... the same issue but "HTTP 500"?? Or is wordpress/apache/mod_rewrite the troublemaker? I have no idea, how i can debug it. I reversed the installation because the blogs has to run... Thats why i installed a new server in our office and installed one of our running project, with the same configuration and installing procedure like all our other servers (see first post). Without open_basedir enabled it runs but otherwise 20% of the request fails with the following error message: Warning: Unknown: open_basedir restriction in effect. File(/var/www/bebees/trunk/bebees/index.php) is not within the allowed path(s): (ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZMaṀ]) in Unknown on line 0 Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0 Fatal error: Unknown: Failed opening required '/var/www/bebees/trunk/bebees/index.php' (include_path='.:/www/prog/php/5.3.0/lib/php') in Unknown on line 0 If i make an erroron purpose, php throws an message as expected for ex.: Warning: include_once() [function.include-once]: open_basedir restriction in effect. File(/var/www/ideacmf/tags/1_0_4/core/cmf.php) is not within the allowed path(s): (/www/tmp:/var/www/bebees/trunk) in /var/www/bebees/trunk/bebees/index.php on line 16 Than i installed the same project which is installed as in my first post, but same result, no segmentation fault: Warning: Unknown: open_basedir restriction in effect. File(/var/www/ecolint/trunk/admin/index.php) is not within the allowed path(s): (M۸) in Unknown on line 0 Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0 Fatal error: Unknown: Failed opening required '/var/www/ecolint/trunk/admin/index.php' (include_path='.:/www/prog/php/5.3.0/lib/php') in Unknown on line 0 On the test server, which i've reported first, i have no clue what i can do else, because i've never learned/used c/c++ with all its dev tools or how i can provide more information to fixing this issue, maybe something with used adaptec driver in kernel, which returns an "unexpected result" which let apache runs in trouble, no idea... Sorry for the information leak =( ...) ------------------------------------------------------------------------ [2009-07-30 09:13:51] starcraftmazter at gmail dot com Hello there I can confirm that I have a very similar issue. I have been running PHP with open_basedir for quite some time. I upgraded to php 5.3.0 recently, previously having ran php 5.2.5. Immediately after installing the newly compiled version, the issues began. The problem as I experience it, is that the "open_basedir" setting seems to be composed of random, non latin1 characters (displayed as symbols by the browser). I cannot draw any reasons as to which users are affected by this or why, but it does not happen to everyone - it is seemingly random. I am using CentOS 5.3 with the latest cPanel 11 on CURRENT which manages the open_basedir. I am using Apache 2.2.6. My compile string is as follows; './configure' '--prefix=/usr/local' '--with-apxs2=/usr/local/apache/bin/apxs' '--enable-bcmath' '--enable-calendar' '--enable-exif' '--enable-ftp' '--enable-gd-native-ttf' '--enable-libxml' '--enable-mbstring' '--enable-soap' '--enable-sockets' '--enable-zip' '--with-bz2' '--with-curl=/opt/curlssl/' '--with-curlwrappers' '--with-freetype-dir=/usr' '--with-gd' '--with-gettext' '--with-imap=/opt/php_with_imap_client/' '--with-imap-ssl=/usr' '--with-jpeg-dir=/usr' '--with-kerberos' '--with-libdir=lib64' '--with-libxml-dir=/opt/xml2' '--with-libxml-dir=/opt/xml2/' '--with-mcrypt=/opt/libmcrypt/' '--with-mhash=/opt/mhash/' '--with-openssl-dir=/usr' '--with-pic' '--with-png-dir=/usr' '--with-xpm-dir=/usr' '--with-xsl=/opt/xslt/' '--with-zlib' '--with-zlib-dir=/usr' '--with-openssl=/usr' '--with-mysql' '--with-mysqli' '--with-pgsql' '--with-sqlite=shared' '--enable-pdo=shared' '--with-pdo-sqlite=shared' '--with-pdo-mysql=shared' '--with-pdo-pgsql=shared' '--with-magickwand=/usr/local/bin' You can check other relevant settings here: http://liway.com/test.php For reference, here is the screenshot of the exact error message which one of the accounts is getting, which shows the open_basedir setting being composed of weird characters. http://img75.imageshack.us/img75/6261/screenshot1a.png The situation involves phpbb3 trying to include parts of itself, so I am confident that it should be allowed, as it's in the same directory or close directories within a single account home folder. The second screenshot is of the relevant open_basedir setting in the httpd.conf file. I have checked the settings against those in the virtual hosts of other accounts where open_basedir works without errors, and I can confirm that they are absolutely identical (apart from the actual home directory). http://img75.imageshack.us/img75/626/screenshot2w.png Needless to say, this is a very serious issue, as open_basedir is an extremely important security measure for those of us who don't run suPHP, and now it is impossible to use it because of these problems. I'm available daily for testing, hope this bug report will get some new attention for developers. Cheers ------------------------------------------------------------------------ [2009-07-19 17:24:31] vytas dot LT at gmail dot com I've noticed that one virtual host with open_basedir is working normally. Problem starts, when you using two or more virtual hosts in apache. Seems to be some sort of memory allocation problem. I have same issue on FreeBSD 7.2-p2 x64 jailed environment. Apache - 2.2.11 from latest FreeBSD ports (2.2.11_7). Error log shows something like: "PHP Warning: Unknown: open_basedir restriction in effect. File(/usr/local/www/apache22/data/info.php) is not within the allowed path(s): (\b) in Unknown on line 0" As you see - \b is the allowed paths, and my apache config file contains "php_admin_value open_basedir /usr/local/www/phpMyAdmin:/usr/local/www/apache22/data:/tmp:/manualbuilds/php53/lib/php". ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/48744 -- Edit this bug report at http://bugs.php.net/?id=48744&edit=1