You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Laravel执行php artisan tinker报mkdir(): Permission denied权限错误求助

Laravel Tinker: mkdir(): Permission Denied Error in Configuration.php Line 352

我之前也碰到过类似的权限问题,结合你的场景和环境信息,给你几个可行的解决思路:

先明确你的问题场景:你以webmaster用户(项目目录demo的所有者)在全新Laravel 5.5环境运行php artisan tinker时,触发了权限拒绝错误,核心提示如下:

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

完整异常追踪信息:

Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() at n/a:n/a
mkdir() at /media/usb/drive1/websites/demo/vendor/psy/psysh/src/Psy/Configuration.php:352
Psy\Configuration->getRuntimeDir() at /media/usb/drive1/websites/demo/vendor/psy/psysh/src/Psy/Shell.php:185
Psy\Shell->getDefaultCommands() at /media/usb/drive1/websites/demo/vendor/symfony/console/Application.php:1211
Symfony\Component\Console\Application->init() at /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() at /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() at /media/usb/drive1/websites/demo/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:29
Illuminate\Container\BoundMethod::Illuminate\Container{closure}() at /media/usb/drive1/websites/demo/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:87
Illuminate\Container\BoundMethod::callBoundMethod() at /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() at /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)
  • Web服务器:Apache/2.4.25
  • Laravel版本:5.5(最新)
  • DocumentRoot:/var/www/websites -> /media/usb/drive1/websites/
  • Apache用户:www-data(拥有项目目录权限)

解决思路:

  1. 手动指定PsySH运行目录
    Tinker依赖的PsySH交互式shell需要创建运行时目录,默认路径可能没有权限。你可以手动创建一个专属目录并赋予权限:

    • 在项目根目录创建目录:mkdir .psysh
    • 设置权限并指定所有者:chmod 775 .psysh && chown webmaster:webmaster .psysh
    • 或者通过环境变量临时指定:export PSYSH_RUNTIME_DIR=/media/usb/drive1/websites/demo/.psysh,之后再运行php artisan tinker
  2. 检查系统临时目录权限
    如果PsySH尝试使用/tmp等系统临时目录,确认webmaster用户对该目录有读写权限:

    • 查看权限:ls -ld /tmp,正常权限应为drwxrwxrwt
    • 若权限不足,临时调整:chmod o+rwx /tmp,用完后建议调回原权限保证安全
  3. 切换到www-data用户运行
    既然www-data拥有项目目录权限,直接以该用户身份执行Tinker:

    • 执行命令:sudo -u www-data php artisan tinker
  4. 检查USB挂载目录权限
    项目目录在USB挂载盘上,挂载参数可能限制了用户访问:

    • 查看挂载参数:mount,确认USB盘没有ro(只读)或noexec等限制选项
    • 若需要,修改/etc/fstab中的挂载配置,添加uid=webmaster,gid=webmaster,rw参数,之后重新挂载:mount -a

内容的提问来源于stack exchange,提问作者pixelmusik

火山引擎 最新活动