Docker容器中执行php artisan tinker报错的解决方法
解决Docker容器中Laravel Artisan Tinker的写入权限错误
在Docker容器的工作目录/var/www下执行命令php artisan tinker时,出现如下错误:
Writing to directory /.config/psysh is not allowed. at vendor/psy/psysh/src/ConfigPaths.php:331 327▕ @\mkdir($dir, 0700, true); 328▕ 329▕ if (!\is_dir($dir) || !\is_writable($dir)) { ➜ 331▕ \trigger_error(\sprintf('Writing to directory %s is not allowed.', $dir), \E_USER_NOTICE); 332▕ 333▕ return false; 334▕ }
问题原因
Tinker依赖的psysh包会尝试写入默认配置路径~/.config/psysh,但在Docker容器内默认HOME目录为根目录/,导致psysh试图写入/.config/psysh——该目录不存在且普通用户无写入权限。
解决方案
在docker-compose.yml的app服务中添加HOME环境变量,将其指向容器内的工作目录/var/www:
services: app: environment: - HOME=/var/www
添加完成后,重新启动容器并执行php artisan tinker即可正常运行。
内容的提问来源于stack exchange,提问作者Eugenio
相关产品推荐
相关产品推荐

