【发布时间】:2017-05-26 20:33:54
【问题描述】:
Laravel 版本 5.0.33
> php artisan tinker
[ErrorException]
mkdir(): Permission denied
这是在生产服务器上,我试图以 tinker 作为网络用户测试命令。该用户拥有基本路径中的每个目录,因此我不确定在运行 artisan tinker 时会尝试创建哪个目录。
【问题讨论】:
Laravel 版本 5.0.33
> php artisan tinker
[ErrorException]
mkdir(): Permission denied
这是在生产服务器上,我试图以 tinker 作为网络用户测试命令。该用户拥有基本路径中的每个目录,因此我不确定在运行 artisan tinker 时会尝试创建哪个目录。
【问题讨论】:
使用非常详细的-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,但没有对该文件夹的执行权限。
【讨论】:
将 .psysh.php 放在包含此内容的 Laravel 项目的根目录中
<?php
return [
'runtimeDir' => './.psysh',
];
更多信息 https://github.com/laravel/tinker/issues/34#issuecomment-357550126
【讨论】:
出现此错误是因为您在没有“dash”选项的情况下切换用户(猜测使用 su)。
将 su www-data 替换为 su - www-data,一切正常!
或
su - 用户名
其中用户名有ssh登录权限
用户名前的破折号很重要
参考:here
【讨论】: