如何在laravel项目中运行vendor / bin / phpunit时修复权限被拒绝

时间:2016-07-22 08:07:12

标签: php laravel phpunit

每当我在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不起作用。

5 个答案:

答案 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