ID: 31618 User updated by: kpederson at mail dot ewu dot edu Reported By: kpederson at mail dot ewu dot edu Status: Assigned Bug Type: Filesystem function related Operating System: redhat enterprise PHP Version: 5CVS-2005-03-14 Assigned To: tony2001 New Comment:
Hmm... wouldn't something like safe_mode_read_dir make it possible to have shared libraries while using safe mode, assuming it allowed fopen(), include/require access? I don't see how else it's possible to make common modules, like the pear library, available globally, unless they never need to do more than include other files in their own hierarchy, while using safe mode. To turn off safe mode, would be a huge security risk unless I were running it using suExec and CGI or something. I'm going to ask on #PHP for other thoughts as there has to be a way to get the best of both worlds (common accessible libraries vs. security). Thanks for the help. Previous Comments: ------------------------------------------------------------------------ [2005-08-12 20:29:55] [EMAIL PROTECTED] This is the reason why safe_mode should have been nuked long time ago. ------------------------------------------------------------------------ [2005-08-12 20:04:46] kpederson at mail dot ewu dot edu Hmm... I can understand that logic. The docs say: "UID/GID checks are bypassed when including files from this directory and its subdirectories" which also seems to fit. It's going to make it really hard for me (and I would guess many others) as a developer to support a given use case. The use case that doesn't seem to be satisfied by this is when the files in the safe_mode_include_dir (smarty for example) needs to fopen() other files in that directory. Smarty tries is_readable, which now succeeds, but there is no way for smarty, when running under safe mode, to actually read common templates... <sigh>. I don't know if this use case can be satisfied without that functionality.... I have hundreds of users, but no apparent way, (other than includes which now work) to do any type of complex templating. In most commercial environments, this wouldn't seem like a problem, but in the university setting, they all need access to a common template. Ok. I'm ranting and a bit frustrated -- although I do admit that you're right per all the docs. Feel free to delete this message and close the bug report. I appreciate you leaving it open a bit longer. If you're open for any discussion, you can e-mail me. Thanks. ------------------------------------------------------------------------ [2005-08-12 19:17:12] [EMAIL PROTECTED] Yes, I've made this intentionally. The file in safe_mode_include_dir can be included, but cannot be opened using fopen() and friends. IMO that's why this directive is called safe_mode_*INCLUDE*_dir. ------------------------------------------------------------------------ [2005-08-12 19:11:00] kibab at icehouse dot net Ok, I tried it out on my dev server and it works! is_readable() now returns the correct values based on the ownership of the file. >From my initial test: is_readable: /var/lib/php/test_templ2.php (true) TEST The fopen($myfilename) call, however, still fails with the following error message (perhaps I should file this as a separate bug report...): Warning: fopen() [function.fopen]: SAFE MODE Restriction in effect. The script whose uid/gid is 49/49 is not allowed to access /var/lib/php/test_templ2.php owned by uid/gid 0/0 in /var/www/sites/devel/test.php on line 10 Warning: fopen(/var/lib/php/test_templ2.php) [function.fopen]: failed to open stream: Success in /var/www/sites/devel/test.php on line 10 And... safe_mode_include_dir on that server is set to /var/lib/php. ------------------------------------------------------------------------ [2005-08-12 18:03:49] [EMAIL PROTECTED] Please try again. It should be there this time. ------------------------------------------------------------------------ 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/31618 -- Edit this bug report at http://bugs.php.net/?id=31618&edit=1