Doc #81042 [ReO]: open_basedir directories must exist
| From: | cmb@php.net | Date: | Thu, 20 May 2021 13:20:00 +0000 |
| Subject: | Doc #81042 [ReO]: open_basedir directories must exist | ||
| References: | 1 | Groups: | php.doc.bugs |
| Request: | Send a blank email to doc-bugs+get-18771@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=81042&edit=1
ID: 81042
Updated by: cmb@php.net
Reported by: bugs-php dot a2 at x25 dot pl
Summary: open_basedir directories must exist
Status: Re-Opened
Type: Documentation Problem
Package: *Directory/Filesystem functions
PHP Version: 7.4.19
Block user comment: N
Private report: N
New Comment:
Why would you want to specify a non existent directory as
open_basedir in the first place?
Previous Comments:
------------------------------------------------------------------------
[2021-05-20 10:58:21] rtrtrtrtrt at dfdfdfdf dot dfd
> open_basedir restriction in effect. File(/home/naox/public_html/test)
> is not within the allowed path(s): (/home/naox/public_html/test/)
seriously:
A: /home/naox/public_html/test
B: /home/naox/public_html/test/
A is pretty clear within B and you could check that and shut up
------------------------------------------------------------------------
[2021-05-20 10:56:30] rtrtrtrtrt at dfdfdfdf dot dfd
> open_basedir is not the problem
> It works correctly
obviosuly
> What does *not* work correctly is what PHP does when a
> file or directory does not exist
and why don't that get fixed given that this issue exists at least for 15 years now?
------------------------------------------------------------------------
[2021-05-20 10:50:07] cmb@php.net
It seems to me this issue is slightly different from bug #52065.
In this case, I'd say this is a documentation issue, namely that
it is not explicitly documented that the directories set in
open_basedir must exist.
------------------------------------------------------------------------
[2021-05-18 19:56:55] requinix@php.net
> And how does it make not open_basedir problem? You are saying that I can't check
> if file/dir exists because it might not exist.
I'll try again.
open_basedir is not the problem. It works correctly. What does *not* work correctly is what PHP does
when a file or directory does not exist.
if (path_exists_and_is_inside_open_basedir($path)) {
// (A) good: exists
} else {
if (open_basedir_is_enabled()) {
// (B) bad: "open_basedir restriction in effect"
// what if $path does not exist and is *inside* open_basedir!
} else {
// (C) good: does not exist
}
}
------------------------------------------------------------------------
[2021-05-18 18:08:29] bugs-php dot a2 at x25 dot pl
And how does it make not open_basedir problem? You are saying that I can't check if file/dir
exists because it might not exist.
Then how about mkdir()? or file_exists() or is_file()? mkdir() cant create directory because it also
does not exist?
cat a.php
<?
ini_set("open_basedir","/home/naox/public_html/test");
mkdir("/home/naox/public_html/test");
php a.php
Warning: mkdir(): open_basedir restriction in effect. File(/home/naox/public_html/test) is not
within the allowed path(s): (/home/naox/public_html/test) in
/home/naox/public_html/naox.vipserv.org/a.php on line 3
------------------------------------------------------------------------
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
https://bugs.php.net/bug.php?id=81042
--
Edit this bug report at https://bugs.php.net/bug.php?id=81042&edit=1