【问题标题】:artisan tinker: mkdir() permission denied工匠修补匠:mkdir() 权限被拒绝
【发布时间】:2017-05-26 20:33:54
【问题描述】:

Laravel 版本 5.0.33

> php artisan tinker

  [ErrorException]            
  mkdir(): Permission denied  

这是在生产服务器上,我试图以 tinker 作为网络用户测试命令。该用户拥有基本路径中的每个目录,因此我不确定在运行 artisan tinker 时会尝试创建哪个目录。

【问题讨论】:

    标签: laravel laravel-artisan


    【解决方案1】:

    使用非常详细的-vvv,我能够获得堆栈跟踪。

    Exception trace:
     () at /data1/vhosts/website.com/vendor/psy/psysh/src/Psy/Configuration.php:459
     Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() at n/a:n/a
     mkdir() at /data1/vhosts/website.com/vendor/psy/psysh/src/Psy/Configuration.php:459
     Psy\Configuration->getHistoryFile() at /data1/vhosts/website.com/vendor/psy/psysh/src/Psy/Configuration.php:598
    

    getHistoryFile() 尝试在用户主目录而不是应用程序目录中创建文件。此用户的主页设置为 /var/www/html,但没有对该文件夹的执行权限。

    【讨论】:

    • @Jebediah 确保您在用户的主目录中具有执行权限(创建文件/文件夹的权限)。
    【解决方案2】:

    将 .psysh.php 放在包含此内容的 Laravel 项目的根目录中

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

    更多信息 https://github.com/laravel/tinker/issues/34#issuecomment-357550126

    【讨论】:

    • 如果您不想让 .psysh 文件夹挂在周围,使用 /tmp 似乎也可以正常工作。
    【解决方案3】:

    出现此错误是因为您在没有“dash”选项的情况下切换用户(猜测使用 su)。

    将 su www-data 替换为 su - www-data,一切正常!

    su - 用户名

    其中用户名有ssh登录权限

    用户名前的破折号很重要

    参考:here

    【讨论】:

      猜你喜欢
      • 2018-06-26
      • 2017-08-14
      • 2016-08-24
      • 2013-07-01
      • 2012-08-13
      • 1970-01-01
      • 2017-04-18
      相关资源
      最近更新 更多