似乎无法在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权限拥有 编辑: 在初始帖子中提供了更多详细信息,这意味着您将向webgroup添加用户“apache”.如果您发现设置太困难,或者您没有在服务器上设置完全权限,那么使用其他地方建议的chown让apache拥有该目录也可以. 例如:chown apache sample_folder 这将使apache成为该文件夹的所有者,使其能够访问写入权限(假设它仍然是755) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- php – performance:在类vars VS结果数组中存储一个大的my
- php – 如何在zend框架中设置mime类型?
- php – 获取具有相同日期的两个表的记录
- PHP去除字符串最后一个字符的三种方法实例
- php codeigniter – 表单助手 – 如何在无线电输入上实现se
- 使用PHP7.2和7.1运行的phpunit测试比使用PHP7.0运行时慢3倍
- php – Magento ::从javascript文件翻译文本
- PHP+MySQL实现模糊查询员工信息功能示例
- php – Codeigniter $this-> db-> order_by(”,’des
- PHP实现的汉字拼音转换和公历农历转换类及使用示例