Laravel: mkdir(): 权限被拒绝

Laravel: mkdir(): Permission denied

我将我的网站部署到 apache 网络服务器并尝试使修补程序工作。

我遇到的问题是我无法在 Laravel 中使用命令 php artisan tinker 与我的用户 (clashfinder) 一起使用 tinker。 我收到此错误消息:

ErrorException  : mkdir(): Permission denied

at /var/www/html/clash/vendor/psy/psysh/src/Configuration.php:363
359|             $this->runtimeDir = ConfigPaths::getRuntimeDir();
360|         }
361|
362|         if (!\is_dir($this->runtimeDir)) {
> 363|             \mkdir($this->runtimeDir, 0700, true);
364|         }
365|
366|         return $this->runtimeDir;
367|     }

Exception trace:

1   mkdir("/run/user/0/psysh")
  /var/www/html/clash/vendor/psy/psysh/src/Configuration.php:363

2   Psy\Configuration::getRuntimeDir()
  /var/www/html/clash/vendor/psy/psysh/src/Shell.php:198

只要我用 sudo 执行命令,它就会起作用。

我在 /var/www/html/clash/ 中的文件权限如下所示:

-rw-rw-r--   1 clashfinder www-data    220 Aug 13 00:46 .editorconfig
-rw-rw-r--   1 clashfinder www-data    861 Aug 13 00:49 .env
-rw-rw-r--   1 clashfinder www-data    726 Aug 13 00:46 .env.example
-rw-rw-r--   1 clashfinder www-data    111 Aug 13 00:46 .gitattributes
-rw-rw-r--   1 clashfinder www-data    163 Aug 13 00:46 .gitignore
-rw-rw-r--   1 clashfinder www-data    174 Aug 13 00:46 .styleci.yml
-rw-rw-r--   1 clashfinder www-data  29006 Aug 13 00:46 CHANGELOG.md
-rw-rw-r--   1 clashfinder www-data   4455 Aug 13 00:46 README.md
drwxrwxr-x   8 clashfinder www-data   4096 Aug 13 00:46 app/
-rw-rw-r--   1 clashfinder www-data   1686 Aug 13 00:46 artisan
drwxrwxr-x   3 clashfinder www-data   4096 Aug 13 00:46 bootstrap/
-rw-rw-r--   1 clashfinder www-data   1645 Aug 13 00:46 composer.json
-rw-rw-r--   1 clashfinder www-data 197091 Aug 13 00:46 composer.lock
drwxrwxr-x   2 clashfinder www-data   4096 Aug 13 00:46 config/
drwxrwxr-x   5 clashfinder www-data   4096 Aug 13 00:46 database/
drwxrwxr-x 731 clashfinder www-data  24576 Aug 13 00:46 node_modules/
-rw-rw-r--   1 clashfinder www-data 411923 Aug 13 00:46 package-lock.json
-rw-rw-r--   1 clashfinder www-data   1462 Aug 13 00:46 package.json
-rw-rw-r--   1 clashfinder www-data   1297 Aug 13 00:46 phpunit.xml
-rw-rw-r--   1 clashfinder www-data    655 Aug 13 00:46 prod2.json
-rw-rw-r--   1 clashfinder www-data     21 Aug 13 00:46 prod2.lock
drwxrwxr-x   4 clashfinder www-data   4096 Aug 13 00:46 public/
drwxrwxr-x   6 clashfinder www-data   4096 Aug 13 00:46 resources/
drwxrwxr-x   2 clashfinder www-data   4096 Aug 13 00:46 routes/
-rw-rw-r--   1 clashfinder www-data    563 Aug 13 00:46 server.php
-rw-rw-r--   1 clashfinder www-data     68 Aug 13 00:46 socket.sh
drwxrwxr-x   5 clashfinder www-data   4096 Aug 13 00:46 storage/
drwxrwxr-x   4 clashfinder www-data   4096 Aug 13 00:46 tests/
drwxrwxr-x  45 clashfinder www-data   4096 Aug 13 00:46 vendor/
-rw-rw-r--   1 clashfinder www-data    537 Aug 13 00:46 webpack.mix.js

权限对我来说是正确的。谁能告诉我为什么它不适用于我的用户?

我认为您需要在 Laravel 的项目根目录中创建 .psysh.php 文件。

然后添加:

<?php
return [
    'runtimeDir' => './.psysh',
];

这是一个老问题,这里是 github tinker issue

的解决方法