每当我在laravel项目的根路径中执行vendor/bin/phpunit
时,它都会返回 Permission denied 错误。我该如何解决这个问题?
重要提示:我不想使用composer update
或删除部分或全部vendor/
目录,然后使用composer install
,因为这些方法会更改太多文件,我的主人不会同意。
ps:lrwxrwxrwx 1 work work 26 Jul 21 07:10 phpunit - > ../的PHPUnit / PHPUnit的/ PHPUnit的
-rwxrwxrwx 1 work work 1199 Jul 22 08:19 ./vendor/phpunit/phpunit/phpunit
且chmod 775 -R vendor
不起作用。
答案 0 :(得分:10)
你应该做的是用php调用:
$ php ./vendor/bin/phpunit
PHPUnit 4.8.35 by Sebastian Bergmann and contributors.
我得到同样的错误,无需php解释器即可执行它:
$ ./vendor/bin/phpunit
bash: ./vendor/bin/phpunit: Permission denied
希望这会对你有所帮助。
答案 1 :(得分:3)
您可以通过更新设置的Vagrant文件来解决此问题,尤其是您的网络根fmode
文件夹的synced_folder
。
变化:
config.vm.synced_folder ".", "/vagrant", :mount_options => ["dmode=777", "fmode=666"]
到:
config.vm.synced_folder ".", "/vagrant", :mount_options => ["dmode=777", "fmode=777"]
对于苏格兰威士忌盒,
变化:
config.vm.synced_folder ".", "/var/www", :mount_options => ["dmode=777", "fmode=666"]
到:
config.vm.synced_folder ".", "/var/www", :mount_options => ["dmode=777", "fmode=777"]
执行此操作后,重新加载配置:
$ vagrant reload
答案 2 :(得分:1)
尝试打开终端并发出命令: 带-R标志的第一个也意味着子目录的更改权限 - R ecursive
sudo chmod 777 -R PATH_TO/vendor
sudo chmod 777 PATH_TO/vendor/phpunit/phpunit
sudo chmod 777 PATH_TO/vendor/phpunit/phpunit/phpunit && chmod +x PATH_TO/vendor/phpunit/phpunit/phpunit
答案 3 :(得分:1)
删除vendor
文件夹并执行composer install
为我工作。
答案 4 :(得分:0)
在vendor/bin
目录中看到的是符号链接。符号链接可能具有正确的权限,但是它们指向的文件却没有。确保符号链接和它们指向的文件都具有执行(x
)位。
# symlink
sudo chmod 0775 vendor/bin/phpunit
# the actual executable
sudo chmod 0775 vendor/phpunit/phpunit/phpunit