PHP/IIS copy()/move_uploaded_file() 无法打开流:权限被拒绝警告
Posted
技术标签:
【中文标题】PHP/IIS copy()/move_uploaded_file() 无法打开流:权限被拒绝警告【英文标题】:PHP/IIS copy()/move_uploaded_file() failed to open stream: Permission denied Warning 【发布时间】:2015-05-21 13:48:52 【问题描述】:我对 Web 开发比较陌生,目前遇到了一个我无法解决的错误。
我在输入“http://localhost/index.html”并选择要上传的示例文件后使用 IIS 测试我的 php,它会生成以下警告:
Warning: move_uploaded_file(upload/Angela_Nie_resume_technical - EditedMW.doc): failed to open stream: Permission denied in C:\inetpub\wwwroot\test.php on line 26
Warning: move_uploaded_file(): Unable to move 'C:\Windows\Temp\php74F2.tmp' to 'upload/Angela_Nie_resume_technical - EditedMW.doc' in C:\inetpub\wwwroot\test.php on line 26
以下是与移动我的文件相关的代码。
$target_dir = "upload/";
$target_file = $target_dir . basename( $_FILES["uploaded"]["name"]) ;
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_file))
echo "The file has been uploaded";
else
echo "Sorry, there was a problem uploading file.";
我正在使用 Windows 8.1 并使用 IIS 来运行 localhost。提前感谢您帮助我!
【问题讨论】:
【参考方案1】:在我的情况下,IUSR 帐户需要目标目录中的权限。不是 ISS_IUSR 帐户,只是 IUSR 帐户。
【讨论】:
工作就像一个魅力。顺便说一句,你是怎么知道的?如何找到正确的 IIS 用户来执行 php 代码? 不幸的是,这是我的反复试验。我不知道如何查找这些信息。【参考方案2】:这意味着运行 apache 服务器的用户没有upload/
目录的写权限。您可以右键单击该文件夹并设置向所有人写入的权限。
更新
这可能是因为您的 PHP 处于安全模式,并且不执行诸如将一个文件移动到另一个文件之类的命令。检查您的 php.ini 中的 safe_mode
和 safe_mode_exec_dir
并进行试验。
【讨论】:
感谢您的回复!我已经为程序可能触及的每个可能的文件夹都这样做了,但它仍然无法正常工作。以上是关于PHP/IIS copy()/move_uploaded_file() 无法打开流:权限被拒绝警告的主要内容,如果未能解决你的问题,请参考以下文章
PHP IIS 环境 ob_flush()刷新缓冲区执行完才显示 解决办法,iis缓冲区原因