PHP 返回“权限被拒绝”。可能是所有权问题?

PHP 返回“权限被拒绝”。可能是所有权问题?

作为更新。我只是觉得它在一个级别上可以正常工作。例如,mkdir('/var/www/laravel/storage/first', 777, true),但当有多个级别时,例如 mkdir('/var/www/laravel/storage/first/second/third', 777, true),它不起作用。这似乎是错误的,不是吗?因为“recursive”参数设置为true

另一个重要更新。 mkdir无法使用 777 创建文件夹。它首先创建一个父文件夹,dr----x--t但无法创建子文件夹。我怀疑是某些 php 配置选项或umask,我不知道。正在调查。


问题是,当我尝试创建文件夹(例如/var/www/laravel/storage/new/directory/name)时,即使我将所有权限设置为 777,PHP 也会返回“权限被拒绝”。

我的设置在 DO 的 droplet,Ubuntu 18 上。它是 Laravel 网站,位于/var/www/laravelnginx 并由 nginx 提供服务。

我已经跑了chown -R www-data:www-data /var/www

的输出ps aux|grep nginx|grep -v grep为:

root      2710  0.0  0.0 141284  1576 ?        Ss   14:04   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data  2712  0.0  0.0 143584  7636 ?        S    14:04   0:00 nginx: worker process
www-data  2714  0.0  0.0 143584  6368 ?        S    14:04   0:00 nginx: worker process
www-data  2715  0.0  0.0 143584  6368 ?        S    14:04   0:00 nginx: worker process
www-data  2716  0.0  0.0 143584  6368 ?        S    14:04   0:00 nginx: worker process

您可以在这里看到主人:

drwxrwxr-x 14 www-data www-data   4096 Mar  4 14:26 ./
drwxrwxrwx  5 www-data www-data   4096 Mar  4 17:45 ../
-rw-rw-r--  1 www-data www-data    106 Mar  4 14:16 .babelrc
-rw-rw-r--  1 www-data www-data    234 Mar  4 14:16 .editorconfig
-rw-rw-r--  1 www-data www-data    651 Mar  4 14:16 .env.example
drwxrwxr-x  8 www-data www-data   4096 Mar  7 13:44 .git/
-rw-rw-r--  1 www-data www-data    111 Mar  4 14:16 .gitattributes
-rw-rw-r--  1 www-data www-data    129 Mar  4 14:16 .gitignore
drwxrwxr-x 21 www-data www-data   4096 Mar  7 13:44 app/
-rw-rw-r--  1 www-data www-data   1686 Mar  4 14:16 artisan
drwxrwxr-x  3 www-data www-data   4096 Mar  4 14:16 bootstrap/
-rw-rw-r--  1 www-data www-data   1573 Mar  4 14:16 composer.json
-rw-rw-r--  1 www-data www-data 185669 Mar  4 14:27 composer.lock
drwxrwxr-x  2 www-data www-data   4096 Mar  5 16:31 config/
drwxrwxr-x  6 www-data www-data   4096 Mar  4 14:16 database/
-rw-rw-r--  1 www-data www-data    597 Mar  4 14:16 package.json
-rw-rw-r--  1 www-data www-data   1134 Mar  4 14:16 phpunit.xml
drwxrwxr-x  5 www-data www-data   4096 Mar  6 15:52 public/
drwxrwxr-x  5 www-data www-data   4096 Mar  4 14:16 resources/
drwxrwxr-x  2 www-data www-data   4096 Mar  4 14:16 routes/
-rw-rw-r--  1 www-data www-data    563 Mar  4 14:16 server.php
drwxrwxr-x  6 www-data www-data   4096 Mar  7 12:52 storage/
drwxrwxr-x  4 www-data www-data   4096 Mar  4 14:16 tests/
drwxrwxr-x 46 www-data www-data   4096 Mar  4 14:27 vendor/
-rw-rw-r--  1 www-data www-data    716 Mar  4 14:16 webpack.config.js
-rw-rw-r--  1 www-data www-data    549 Mar  4 14:16 webpack.mix.js
-rw-rw-r--  1 www-data www-data   1630 Mar  4 14:16 yarn-error.log
-rw-rw-r--  1 www-data www-data 176590 Mar  4 14:16 yarn.lock

权限设置如下:

find /var/www/laravel/ -type f -exec chmod 664 {} \;
find /var/www/laravel/ -type d -exec chmod 775 {} \;

SELinux 似乎未安装。getenforce命令返回安装建议。

还需要检查什么吗?

更新 1

目标文件夹的权限:

cd /var/www/laravel/storage
ll

输出:

drwxrwxr-x  6 www-data www-data 4096 Mar  7 12:52 ./
drwxrwxr-x 14 www-data www-data 4096 Mar  4 14:26 ../
drwxrwxr-x  3 www-data www-data 4096 Mar  4 14:16 app/
drwxrwxr-x  3 www-data www-data 4096 Mar  7 12:52 f/
drwxrwxr-x  6 www-data www-data 4096 Mar  4 14:16 framework/
drwxrwxr-x  2 www-data www-data 4096 Mar  4 15:18 logs/

更新2

PHPexec('whoami')返回 'www-data'

更新 3

对于在 PHP 中创建文件夹,我使用mkdir($pathInfo['dirname'], 777, true)并且路径是绝对的。

相关内容