PHP Artisan Tinker 无法写入配置路径
PHP Artisan Tinker Cannot Write to Config Path
我以前用过 Tinker,但突然它停止工作,无论是什么项目,什么版本,新的还是现有的。我在 macbook pro 2013,mac os Sierra,iterm2 和 zsh。我已经进行了全面研究,除了堆栈溢出中对 https://github.com/bobthecow/psysh/issues/382 的一个引用外,没有发现任何相关内容,它没有显示分辨率,不是 laravel 特定的,但似乎涉及 psy shell(所有其他 artisan 命令都可以):
流浪汉@homestead:~/Code/application$phpartisan修补匠
[ErrorException]
Writing to /home/vagrant/.config/psysh is not allowed.
是我显示的错误。 Vagrant是通过virtual box设置的 运行ning homestead-7.
当我通过 ssh 进入 vagrant 和 ls -la 时,我看到了 .config 文件夹,但无法访问它,我也无法 mkdir mvdir,因为访问被拒绝错误。 (如果我从下面的堆栈跟踪中了解到哪个是触发错误的地方?touchfilemkdir 所在的跟踪顶部?)该文件夹本身由 vagrant 所有。我可以弄清楚错误是在哪里触发的,但我不知道为什么 possibly 会被触发,无论我使用的 laravel 是什么版本,无论是现有项目还是新下载.
在 laravel 个项目中,我有
"laravel/tinker": "~1.0",
在composer.json和
/*
* Package Service Providers...
*/
Laravel\Tinker\TinkerServiceProvider::class
位于app/cofig/app.php.
我做了 运行 一个动词ose 堆栈跟踪,尽管我不确定它指向的是什么已损坏或为什么。
Exception trace:
() at
/home/vagrant/Code/lightpointLP/vendor/psy/psysh/src/Psy/ConfigPaths.php:213
Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() at n/a:n/a
trigger_error() at /home/vagrant/Code/lightpointLP/vendor/psy/psysh/src/Psy/ConfigPaths.php:213
Psy\ConfigPaths::touchFileWithMkdir() at /home/vagrant/Code/lightpointLP/vendor/psy/psysh/src/Psy/Configuration.php:361
Psy\Configuration->setHistoryFile() at /home/vagrant/Code/lightpointLP/vendor/psy/psysh/src/Psy/Configuration.php:409
Psy\Configuration->getHistoryFile() at /home/vagrant/Code/lightpointLP/vendor/psy/psysh/src/Psy/Configuration.php:546
Psy\Configuration->getReadline() at /home/vagrant/Code/lightpointLP/vendor/psy/psysh/src/Psy/Shell.php:82
Psy\Shell->__construct() at /home/vagrant/Code/lightpointLP/vendor/laravel/tinker/src/Console/TinkerCommand.php:53
Laravel\Tinker\Console\TinkerCommand->handle() at n/a:n/a
call_user_func_array() at /home/vagrant/Code/lightpointLP/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:29
Illuminate\Container\BoundMethod::Illuminate\Container\{closure}() at /home/vagrant/Code/lightpointLP/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:87
Illuminate\Container\BoundMethod::callBoundMethod() at /home/vagrant/Code/lightpointLP/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:31
Illuminate\Container\BoundMethod::call() at /home/vagrant/Code/lightpointLP/vendor/laravel/framework/src/Illuminate/Container/Container.php:539
Illuminate\Container\Container->call() at /home/vagrant/Code/lightpointLP/vendor/laravel/framework/src/Illuminate/Console/Command.php:182
Illuminate\Console\Command->execute() at /home/vagrant/Code/lightpointLP/vendor/symfony/console/Command/Command.php:264
Symfony\Component\Console\Command\Command->run() at /home/vagrant/Code/lightpointLP/vendor/laravel/framework/src/Illuminate/Console/Command.php:167
Illuminate\Console\Command->run() at /home/vagrant/Code/lightpointLP/vendor/symfony/console/Application.php:874
Symfony\Component\Console\Application->doRunCommand() at /home/vagrant/Code/lightpointLP/vendor/symfony/console/Application.php:228
Symfony\Component\Console\Application->doRun() at /home/vagrant/Code/lightpointLP/vendor/symfony/console/Application.php:130
Symfony\Component\Console\Application->run() at /home/vagrant/Code/lightpointLP/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:122
Illuminate\Foundation\Console\Kernel->handle() at /home/vagrant/Code/lightpointLP/artisan:35
如果可能需要任何其他信息,我很乐意提供,我真的很想知道发生了什么或如何解决它。os。
谢谢
8 月 31 日更新
所以我发现当我在 vagrant@homestead 并且我在 root@homestead:/home/vagrant# 时我 sudo su 然后我输入 .config 有一个 configstore 目录和一个 psysh 目录,但它归 root 所有。我将所有者更改为 vagrant,退出,重新加载 vagrant 和同样的错误。
drwx------ 2 root root 4096 May 4 00:55 configstore
drwxr-xr-x 2 vagrant vagrant 4096 Aug 31 23:37 psysh
于是我尝试sudo -i 得到了root@homestead 但是发现.config 的内容不一样。这次它有 .composer 目录并且不存在 psysh。所以我添加了 vagrant 作为所有者的 psysh 目录
drwxr-xr-x 2 root root 4096 Feb 26 2017 composer
drwxr-xr-x 2 vagrant vagrant 4096 Aug 31 23:59 psysh
但这仍然不起作用。我也退出了,重新加载了 vagrant,我在两者上都 config:cleared 但我得到了同样的无法写入错误。
我很忙oss,任何见解都会有所帮助。谢谢!
看起来这是 PsySH 的问题 http://psysh.org/。
我无法回答这个问题,但看起来这个人遇到了同样的问题。联系他并询问他是如何修复它的可能是值得的。
https://github.com/bobthecow/psysh/issues/382
您是否尝试过 运行 作曲家更新?祝你好运。
经过进一步的研究和测试后,决定提出一个新问题,因为它超出了最初看似错误的范围。
我遇到了完全相同的问题,并且持续了好几天。我通过项目目录中的 运行ning composer dump-autoload
修复了它。我之前尝试过该命令,但它没有用,因为我在没有互联网访问的情况下尝试它,请确保您在 运行 命令时连接到互联网。祝你好运!
我尝试了 composer update、dump-autoload 但没有任何效果。只需更改 ~./config 文件夹的权限即可。可以设置755或者更高(我这里说的不是生产环境)
我已经在我的终端上执行了下一条命令:
sudo chmod -R 775 ~/.config
#You need to create a config file for PsySH with runtimeDir variable.
# Just create a file ~/.config/psysh/config.php with:
<?php
return [
'runtimeDir' => '~/tmp'
];
我以前用过 Tinker,但突然它停止工作,无论是什么项目,什么版本,新的还是现有的。我在 macbook pro 2013,mac os Sierra,iterm2 和 zsh。我已经进行了全面研究,除了堆栈溢出中对 https://github.com/bobthecow/psysh/issues/382 的一个引用外,没有发现任何相关内容,它没有显示分辨率,不是 laravel 特定的,但似乎涉及 psy shell(所有其他 artisan 命令都可以):
流浪汉@homestead:~/Code/application$phpartisan修补匠
[ErrorException]
Writing to /home/vagrant/.config/psysh is not allowed.
是我显示的错误。 Vagrant是通过virtual box设置的 运行ning homestead-7.
当我通过 ssh 进入 vagrant 和 ls -la 时,我看到了 .config 文件夹,但无法访问它,我也无法 mkdir mvdir,因为访问被拒绝错误。 (如果我从下面的堆栈跟踪中了解到哪个是触发错误的地方?touchfilemkdir 所在的跟踪顶部?)该文件夹本身由 vagrant 所有。我可以弄清楚错误是在哪里触发的,但我不知道为什么 possibly 会被触发,无论我使用的 laravel 是什么版本,无论是现有项目还是新下载.
在 laravel 个项目中,我有
"laravel/tinker": "~1.0",
在composer.json和
/*
* Package Service Providers...
*/
Laravel\Tinker\TinkerServiceProvider::class
位于app/cofig/app.php.
我做了 运行 一个动词ose 堆栈跟踪,尽管我不确定它指向的是什么已损坏或为什么。
Exception trace:
() at
/home/vagrant/Code/lightpointLP/vendor/psy/psysh/src/Psy/ConfigPaths.php:213
Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() at n/a:n/a
trigger_error() at /home/vagrant/Code/lightpointLP/vendor/psy/psysh/src/Psy/ConfigPaths.php:213
Psy\ConfigPaths::touchFileWithMkdir() at /home/vagrant/Code/lightpointLP/vendor/psy/psysh/src/Psy/Configuration.php:361
Psy\Configuration->setHistoryFile() at /home/vagrant/Code/lightpointLP/vendor/psy/psysh/src/Psy/Configuration.php:409
Psy\Configuration->getHistoryFile() at /home/vagrant/Code/lightpointLP/vendor/psy/psysh/src/Psy/Configuration.php:546
Psy\Configuration->getReadline() at /home/vagrant/Code/lightpointLP/vendor/psy/psysh/src/Psy/Shell.php:82
Psy\Shell->__construct() at /home/vagrant/Code/lightpointLP/vendor/laravel/tinker/src/Console/TinkerCommand.php:53
Laravel\Tinker\Console\TinkerCommand->handle() at n/a:n/a
call_user_func_array() at /home/vagrant/Code/lightpointLP/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:29
Illuminate\Container\BoundMethod::Illuminate\Container\{closure}() at /home/vagrant/Code/lightpointLP/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:87
Illuminate\Container\BoundMethod::callBoundMethod() at /home/vagrant/Code/lightpointLP/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:31
Illuminate\Container\BoundMethod::call() at /home/vagrant/Code/lightpointLP/vendor/laravel/framework/src/Illuminate/Container/Container.php:539
Illuminate\Container\Container->call() at /home/vagrant/Code/lightpointLP/vendor/laravel/framework/src/Illuminate/Console/Command.php:182
Illuminate\Console\Command->execute() at /home/vagrant/Code/lightpointLP/vendor/symfony/console/Command/Command.php:264
Symfony\Component\Console\Command\Command->run() at /home/vagrant/Code/lightpointLP/vendor/laravel/framework/src/Illuminate/Console/Command.php:167
Illuminate\Console\Command->run() at /home/vagrant/Code/lightpointLP/vendor/symfony/console/Application.php:874
Symfony\Component\Console\Application->doRunCommand() at /home/vagrant/Code/lightpointLP/vendor/symfony/console/Application.php:228
Symfony\Component\Console\Application->doRun() at /home/vagrant/Code/lightpointLP/vendor/symfony/console/Application.php:130
Symfony\Component\Console\Application->run() at /home/vagrant/Code/lightpointLP/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:122
Illuminate\Foundation\Console\Kernel->handle() at /home/vagrant/Code/lightpointLP/artisan:35
如果可能需要任何其他信息,我很乐意提供,我真的很想知道发生了什么或如何解决它。os。 谢谢
8 月 31 日更新
所以我发现当我在 vagrant@homestead 并且我在 root@homestead:/home/vagrant# 时我 sudo su 然后我输入 .config 有一个 configstore 目录和一个 psysh 目录,但它归 root 所有。我将所有者更改为 vagrant,退出,重新加载 vagrant 和同样的错误。
drwx------ 2 root root 4096 May 4 00:55 configstore
drwxr-xr-x 2 vagrant vagrant 4096 Aug 31 23:37 psysh
于是我尝试sudo -i 得到了root@homestead 但是发现.config 的内容不一样。这次它有 .composer 目录并且不存在 psysh。所以我添加了 vagrant 作为所有者的 psysh 目录
drwxr-xr-x 2 root root 4096 Feb 26 2017 composer
drwxr-xr-x 2 vagrant vagrant 4096 Aug 31 23:59 psysh
但这仍然不起作用。我也退出了,重新加载了 vagrant,我在两者上都 config:cleared 但我得到了同样的无法写入错误。
我很忙oss,任何见解都会有所帮助。谢谢!
看起来这是 PsySH 的问题 http://psysh.org/。
我无法回答这个问题,但看起来这个人遇到了同样的问题。联系他并询问他是如何修复它的可能是值得的。
https://github.com/bobthecow/psysh/issues/382
您是否尝试过 运行 作曲家更新?祝你好运。
经过进一步的研究和测试后,决定提出一个新问题,因为它超出了最初看似错误的范围。
我遇到了完全相同的问题,并且持续了好几天。我通过项目目录中的 运行ning composer dump-autoload
修复了它。我之前尝试过该命令,但它没有用,因为我在没有互联网访问的情况下尝试它,请确保您在 运行 命令时连接到互联网。祝你好运!
我尝试了 composer update、dump-autoload 但没有任何效果。只需更改 ~./config 文件夹的权限即可。可以设置755或者更高(我这里说的不是生产环境)
我已经在我的终端上执行了下一条命令:
sudo chmod -R 775 ~/.config
#You need to create a config file for PsySH with runtimeDir variable.
# Just create a file ~/.config/psysh/config.php with:
<?php
return [
'runtimeDir' => '~/tmp'
];