我在Windows Server 2008的IIS 7上运行的PHP网站出现问题。
有一行代码调用mkdir出现错误,错误日志显示为:
“... 没有权限 ...”
我已经排除了与文件夹权限有关的一切(我尝试了多个组:每个人,用户,IUSR,网络服务等,但没有运气)。
我需要知道mkdir的工作方式,它会检查父文件夹的只读属性吗?
如果是这样,那么这可能是问题的根源,因为Windows Server 2008中的所有文件夹都标记为“只读”,并且该复选框呈灰色显示-微软说这是“设计使然”,但我认为它确实是“不好的”设计”。
请帮忙。
附言可以在https://github.com/LimeSurvey/LimeSurvey/blob/070d255ba381d7abcd231d7c9e0c7d11f5578c97/admin/templates.php#L1182中找到错误的代码行是1182行。
解:
echo
输出$target
值得到教训:
赏金授予@BOMEz,因为
mkdir()
文档提供了有用的报价,表明我应该仔细考虑权限。 @BOMEz还提供了量身定制的答案,并通过提供帮助的评论与我互动。 最佳答案
if(mkdir($target,0777))
至:
if(mkdir($target))
Windows将忽略模式选项。可能是一些奇怪的错误导致了它的失败。此外,对于$ target变量,您可以尝试强制将其链接到完整的Windows路径吗?如
C:\Program Files\ IIS\...
在遇到拒绝使用尝试使用相对路径的访问之前,我曾遇到过Windows的情况,但是完整路径可以正常工作。编辑:
查看mkdir()文档上的注释时,一个注释者提到您可能还需要向用户添加执行权限: