我们最近更改了文件夹(Windows Server 2012 R2 / IIS)的权限,以适应使用PHP编写文本文件。我们可以在使用相对路径时编写测试文件,但是如果我们尝试使用$ url会话变量或URL本身就会失败(我们的URL不是公共的,而是在私有内部网络上):
PHP警告:fopen(txt / newfile.txt):无法打开流:第3行的C:\ inetpub \ wwwroot \ folder \ file.php中的权限被拒绝
第3行(更改网址以保护隐私):
$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 = On。我可以要求开发人员使用相对路径,但我很想知道这里发生了什么,以及如果我们愿意,如何使用URL。
谢谢!
答案 0 :(得分:2)
在PHP中,http://
或ftp://
等函数中fopen
或file_get_contents
等协议的支持由所谓的"stream wrappers"实现。
根据the http://
stream wrapper的“选项”表格 - 不支持写作
虽然HTTP协议确实有像PUT
这样的方法用于编写,但在绝大多数情况下,Web(至少在HTTP级别)只读给用户。
除此之外,如果您正在本地计算机上编辑文件,那么就没有任何理由可以涉及与网络相关的任何内容,无论是复杂性,性能还是安全性。所以,请使用“相对”方法 - 相对于您当前的工作目录而不是任何 URL 。