我正在将几个 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)