似乎无法在PHP中获得mkdir()的正确权限

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了似乎无法在PHP中获得mkdir()的正确权限脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下简单的脚本来测试 PHP中的mkdir()函数

<?PHP
  $id = rand();

  $targetPath = $_SERVER['DOCUMENT_ROOT'] . '/sample_folder/' . $id .'/';
  mkdir(str_replace('//','/',$targetPath),0755,true);
?>

理想情况下,每次在我的web目录/ sample_folder下运行脚本时,这将创建一个随机文件夹. Sample_folder具有755个权限.

面临的问题是,我一直在运行PHP:mkdir()权限被拒绝的问题.我的sample_folder权限当前设置为chmod 755.

一切我读过的状态不是chmod到777所以请不要建议.

出于测试目的,chmod 777的’sample_folder’目录解决了这个问题,但这又引发了安全问题.关于如何使这项工作还有其他我想念的东西吗?

值得注意的是:我系统上的PHP用户是“apache”;

我在Media Temple专用虚拟服务器上运行PHP 5.3.*和CentOS 5.5以供参考.我还查看了几乎所有关于SO的chmod问题,似乎无法找到符合我的问题的解决方案(除了777个建议).

编辑

在我的服务器上运行ls -la返回:

最后更新

提供的答案非常有用.对于任何寻找其他信息的人,我都会看到这篇知识库文章,虽然它在Media Temple上列出,但我认为这些原则适用于任何最相似的配置:

(dv):Resolve Apache permission errors

解决方法

原因是脚本需要在sample_folder中写入权限.

我不知道你的实际设置,但我猜你的脚本要么是在世界权限下运行,要么是组权限是5(读4执行1),因为你当前的权限是755(所有者为7,组为5) 5为世界).要将目录写入该文件夹,您的脚本将需要写访问权限.如果您有权访问chown目录,则可以比777更安全地设置它.我的建议是创建一个名为“webgroup”或类似组的组,并将您的webserver用户放入该组.然后,在设置完成后,给予组写权限(770)是合适的.如果您对权限的工作方式有点模糊,最终的设置将是:

sample_folder:由root,group webgroup,770权限拥有
添加正在运行的任何用户apache(或其他Web服务器)作为webgroup

编辑:

在初始帖子中提供了更多详细信息,这意味着您将向webgroup添加用户“apache”.如果您发现设置太困难,或者您没有在服务器上设置完全权限,那么使用其他地方建议的chown让apache拥有该目录也可以.

例如:chown apache sample_folder

这将使apache成为该文件夹的所有者,使其能够访问写入权限(假设它仍然是755)

脚本宝典总结

以上是脚本宝典为你收集整理的似乎无法在PHP中获得mkdir()的正确权限全部内容,希望文章能够帮你解决似乎无法在PHP中获得mkdir()的正确权限所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。