Laravel - “工匠修补匠” - > mkdir():权限被拒绝

Posted

技术标签:

【中文标题】Laravel - “工匠修补匠” - > mkdir():权限被拒绝【英文标题】:Laravel - "artisan tinker" -> mkdir(): Permission denied 【发布时间】:2018-06-26 11:02:27 【问题描述】:

我已经搜索了几个小时,但即使有类似的问题也找不到解决方案。

我正在尝试使用用户 webmaster(项目目录的所有者 demo)在全新的 laravel 安装上运行 php artisan tinker,但我收到以下错误:

In Configuration.php line 352:
mkdir(): Permission denied

使用详细标志运行:

异常跟踪: Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() at n/a:n/a mkdir() 在 /media/usb/drive1/websites/demo/vendor/psy/psysh/src/Psy/Configuration.php:352 Psy\Configuration->getRuntimeDir() 在 /media/usb/drive1/websites/demo/vendor/psy/psysh/src/Psy/Shell.php:185 Psy\Shell->getDefaultCommands() 在 /media/usb/drive1/websites/demo/vendor/symfony/console/Application.php:1211 Symfony\Component\Console\Application->init() 在 /media/usb/drive1/websites/demo/vendor/symfony/console/Application.php:435 Symfony\Component\Console\Application->add() at /media/usb/drive1/websites/demo/vendor/psy/psysh/src/Psy/Shell.php:134 Psy\Shell->add() 在 /media/usb/drive1/websites/demo/vendor/symfony/console/Application.php:421 Symfony\Component\Console\Application->addCommands() at /media/usb/drive1/websites/demo/vendor/laravel/tinker/src/Console/TinkerCommand.php:54 Laravel\Tinker\Console\TinkerCommand->handle() at n/a:n/a call_user_func_array() 在 /media/usb/drive1/websites/demo/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:29 Illuminate\Container\BoundMethod::Illuminate\Containerclosure() 在 /media/usb/drive1/websites/demo/vendor/laravel/framework/src/Illuminate/Container/ BoundMethod.php:87 Illuminate\Container\BoundMethod::callBoundMethod() 在 /media/usb/drive1/websites/demo/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:31 Illuminate\Container\BoundMethod::call() at /media/usb/drive1/websites/demo/vendor/laravel/framework/src/Illuminate/Container/Container.php:549 Illuminate\Container\Container->call() at /media/usb/drive1/websites/demo/vendor/laravel/framework/src/Illuminate/Console/Command.php:183 Illuminate\Console\Command->execute() at /media/usb/drive1/websites/demo/vendor/symfony/console/Command/Command.php:252 Symfony\Component\Console\Command\Command->run() at /media/usb/drive1/websites/demo/vendor/laravel/framework/src/Illuminate/Console/Command.php:170 Illuminate\Console\Command->run() at /media/usb/drive1/websites/demo/vendor/symfony/console/Application.php:938 Symfony\Component\Console\Application->doRunCommand() 在 /media/usb/drive1/websites/demo/vendor/symfony/console/Application.php:240 Symfony\Component\Console\Application->doRun() at /media/usb/drive1/websites/demo/vendor/symfony/console/Application.php:148 Symfony\Component\Console\Application->run() at /media/usb/drive1/websites/demo/vendor/laravel/framework/src/Illuminate/Console/Application.php:88 Illuminate\Console\Application->run() at /media/usb/drive1/websites/demo/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:121 Illuminate\Foundation\Console\Kernel->handle() at /media/usb/drive1/websites/demo/artisan:37

希望有人能给我一些提示。谢谢!

相关信息

发行版:Raspbian GNU/Linux 8 (jessie) 网络服务器:Apache/2.4.25 Laravel 版本:5.5(最新) DocumentRoot/var/www/websites -> /media/usb/drive1/websites/ Apache 用户www-data(在项目目录中有权限)

报告的类似问题

https://github.com/laravel/tinker/issues/34 artisan tinker: mkdir() permission denied

【问题讨论】:

DocumentRoot 应该是 Laravel 的 public/ 文件夹,你设置对了吗? 对,但我正在运行一个开发服务器,其中包含多个项目以覆盖一个域。无论如何,我认为这与此问题无关。 您是否尝试将 runtimeDir 转储到 Configuration->getRuntimeDir() 以找出权限被拒绝的位置? @sisve 感谢您的评论!我将如何实现将变量转储到终端? dump($variable); 【参考方案1】:

我问这个问题已经一年了。我只是忽略了缺乏使用修补程序并继续。但是今天我终于找到了一个解决方案,并认为这可能是一个好主意。

共享服务器环境可能会导致此错误。从文件vendor/psy/psysh/src/Configuration.php 中转储第352 行的变量$this->runtimeDir 告诉我缺少在/run/user/1000/psysh 中创建文件夹的权限,其中1000 是uid。

一种解决方法是告诉 psysh 使用操作用户具有写入权限的目录。这可以通过runtimeDir 配置选项来完成。您需要做的就是在 ~/.config/psysh/config.php 或本地 Laravel 项目根目录中的 .psysh.php 中创建一个配置文件。添加以下内容,您就可以开始了。

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

【讨论】:

以上是关于Laravel - “工匠修补匠” - > mkdir():权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE [42S02] 工匠修补程序的问题

Laravel源码分析--Laravel生命周期详解

返回重定向()->动作('BookingController@index')laravel 8

PHP笔记-laravel环境搭建(Laravel5.8.35版本)

Laravel 5 HMVC 路由问题

laravel框架好学吗