ID: 20054 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Analyzed Bug Type: Scripting Engine problem Operating System: Linux - Redhat 7.3 PHP Version: 4.3.0-dev New Comment:
Just for the record, I wrote a patch for this to allow for paths to be excluded from the safemode checks basically the same as the include value does. Posted that the the developers list asking if anyone was interested, enver got a reply, so I thought I'd add it in here for completeness sake. If anyone has any suggestions with what I can do with the patch, let me know :} Previous Comments: ------------------------------------------------------------------------ [2002-11-02 01:30:40] [EMAIL PROTECTED] I've got Apache 2 and PHP 4.3.0-dev on Red Hat 7.2 with /usr/share/pear in safe_mode_include_dir and I get "SAFE MODE Restriction in effect. The script whose uid is 502 is not allowed to access /usr/share/pear/Mail.php owned by uid 0" etc., with 'require_once( "Mail.php" );' and 'require( "Mail.php" );' and 'include( "Mail.php" );' and 'include( "/usr/share/pear/Mail.php" );' and every other variation I can think to try. ------------------------------------------------------------------------ [2002-10-30 11:37:56] [EMAIL PROTECTED] The current implementation of safe_mode_include_dir only allows require/include functions to bypass safe_mode. I've began a discussion on php-dev on whether or not this should be expanded to include other file operations. If you have an opinion on the matter, make it known there (php-dev). ------------------------------------------------------------------------ [2002-10-24 12:17:37] [EMAIL PROTECTED] Correct version (user tried with snapshot too..) ------------------------------------------------------------------------ [2002-10-24 02:49:22] [EMAIL PROTECTED] This is possibly related to Bug #17858. We've got Apache2 on Redhat 7.3, with safemode in php enabled. We have safe_mode_gid set to on as well. The safe_mode include directory is set as follows: safe_mode_include_dir = "/home/staff/ryan/WWW" I've then got the test script: <?php if ($dir = opendir("/home/staff/ryan/WWW")) {while (($file = readdir($dir)) !== false) { echo "$file\n"; } closedir($dir); } else { echo "FAILED"; } ?> That script has the following ownership permissions: -rw-r--r-- 1 web nobody 229 Oct 24 15:31 test2.php And /home/staff/ryan/WWW is: drwxr-xr-x 5 ryan staff 4096 Oct 21 17:30 WWW Calling the script displays "FAILED" on the browser and causes the two following errors in the error log: PHP Warning: opendir() [<a href='http://www.php.net/function.opendir'>function.opendir</a>]: SAFE MODE Restriction in effect. The script whose uid/gid is 89/99 is not allowed to access /home/staff/ryan/WWW/ owned by uid/gid 270/110 in /home/www/DOCS/phptest/test2.php on line 3 PHP Warning: opendir(/home/staff/ryan/WWW/) [<a href='http://www.php.net/function.opendir'>function.opendir</a>]: failed to open dir: Inappropriate ioctl for device in /home/www/DOCS/phptest/test2.php on line 3 Changing the ownership permissions to the same user and/or group causes the script to execute fine, displaying the contents with no problems or errors. It would appear that the safe_mode_include_dir value is not being used, but I'm also open to the suggesion that I've stuffed up somewhere else. For the record, I originally started having problems with 4.2.2 (user and group returned as -1) this was fixed upgrading to 4.3.0-pre1, but then the include_dir still had problems. I've tested it with today's snapshot (php4-200210232100) and still have the same problem. My config options looks like : ./configure --with-mysql=/usr/local/mysql --with-openssl --with-xml --enable-track-vars --enable-force-cgi-redirect --enable-versioning --with-apxs2=/usr/local/httpd/bin/apxs --with-zlib --enable-ftp --enable-sockets --with-gettext --with-imap=/usr/local/imap --with-imap-ssl Ummm, help? Cheers, Ryan. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=20054&edit=1