在 PHP 中使用内部 URL 进行 fopen
fopen with Internal URL in PHP
我们最近更改了文件夹 (Windows Server 2012 R2 / IIS) 的权限以适应使用 PHP 写入文本文件。当我们使用相对路径时,我们可以编写测试文件,但是如果我们尝试使用 $url 会话变量或 URL 本身,它会失败(我们的 URL 不是 public,但在私有内部网络上):
PHP Warning: fopen(txt/newfile.txt): failed to open stream: Permission denied in C:\inetpub\wwwroot\folder\file.php on line 3
第 3 行(URL 更改以维护隐私):
$myfile = fopen("http://11.11.11.11/folder/txt/newfile.txt", "w") or die
("Unable to open file!");
而这有效:
$myfile = fopen("txt/newfile.txt", "w") or die
("Unable to open file!");
我检查了 php.ini 和 allow_url_fopen = 打开。我可以要求开发人员使用相对路径,但我很想知道这里发生了什么以及如何使用 URL 如果我们愿意的话。
谢谢!
在PHP中,fopen
或file_get_contents
等函数中对http://
或ftp://
等协议的支持由所谓的[=16实现=].
根据 "Options" table the http://
stream wrapper - 不支持写入。
虽然 HTTP 协议确实有像 PUT
这样专为写入而设计的方法,但在绝大多数情况下,网络(至少在 HTTP 级别)对其用户来说是只读的。
除此之外,如果您在本地计算机上编辑文件,则没有充分的理由涉及任何与网络相关的内容,无论是复杂性、性能还是安全性。因此,只需使用 "relative" 方法 - 它将相对于 您当前的工作目录 而不是任何 URL .
我们最近更改了文件夹 (Windows Server 2012 R2 / IIS) 的权限以适应使用 PHP 写入文本文件。当我们使用相对路径时,我们可以编写测试文件,但是如果我们尝试使用 $url 会话变量或 URL 本身,它会失败(我们的 URL 不是 public,但在私有内部网络上):
PHP Warning: fopen(txt/newfile.txt): failed to open stream: Permission denied in C:\inetpub\wwwroot\folder\file.php on line 3
第 3 行(URL 更改以维护隐私):
$myfile = fopen("http://11.11.11.11/folder/txt/newfile.txt", "w") or die
("Unable to open file!");
而这有效:
$myfile = fopen("txt/newfile.txt", "w") or die
("Unable to open file!");
我检查了 php.ini 和 allow_url_fopen = 打开。我可以要求开发人员使用相对路径,但我很想知道这里发生了什么以及如何使用 URL 如果我们愿意的话。
谢谢!
在PHP中,fopen
或file_get_contents
等函数中对http://
或ftp://
等协议的支持由所谓的[=16实现=].
根据 "Options" table the http://
stream wrapper - 不支持写入。
虽然 HTTP 协议确实有像 PUT
这样专为写入而设计的方法,但在绝大多数情况下,网络(至少在 HTTP 级别)对其用户来说是只读的。
除此之外,如果您在本地计算机上编辑文件,则没有充分的理由涉及任何与网络相关的内容,无论是复杂性、性能还是安全性。因此,只需使用 "relative" 方法 - 它将相对于 您当前的工作目录 而不是任何 URL .