Kev*_*ney 9 php suexec apache-2.2
我正在将几个 Wordpress 博客迁移到 AWS,但遇到了文件权限问题,该问题在过去几个小时内成功阻止了我。
最简单的 fopen 调用总是失败,并显示“无法打开流:权限被拒绝”:
<?php $handle = fopen('test.txt', 'w') or die('Can\'t open file'); ?>
Run Code Online (Sandbox Code Playgroud)
我已经尝试/检查了以下内容
有什么我错过的可能会导致这种情况吗?我怀疑我已经盯着这个看了很长时间,我错过了一些明显的东西。
更新:在应用了womble 的建议后,我开始认为这个问题不仅仅是错误的权限或 PHP 配置错误。我确实设法让上面的代码写出一个文件,但是即使使用正确的用户和组执行 PHP 脚本,生成的文件所有权和组也被设置为 apache 的所有权和组。如果我从命令行执行相同的测试脚本,则发出的文件具有正确的权限。这让我相信这是我使用 mod_suexec 的问题。
编辑:我对getmyuid()和getmygid()的使用不正确,因为它们只返回脚本文件的用户和组,而不是它运行的权限。更正确的方法是使用像这样的 comething:
<?php echo exec('ps -up '.getmypid()); ?>
Run Code Online (Sandbox Code Playgroud)
好问题——表明你已经完成了你的功课。
我想不出任何你没有检查的“明显”,所以我只能给你一些更高级的调试建议。
stracePHP 进程,看看它到底在做什么。fopen(..., 'r')来三重检查您的目录树权限,实际上没有问题。su给有问题的用户并尝试在命令行上做一些事情。如果这有效,那么您就知道您的脚本没有以您认为的权限运行。getfacl是要使用的工具)上是否没有扩展 ACL 。这并不常见,但每隔一段时间它们就会跳起来撕掉你的脸。如果您确实有 ACL,setfacl -x请在确认它们是不必要的后使用删除它们。| 归档时间: |
|
| 查看次数: |
25096 次 |
| 最近记录: |