运行旧PHP版本的Composer PHP脚本导致语法错误?

时间:2017-01-06 01:19:38

标签: php laravel laravel-5.2 composer-php

我在Laravel中使用作曲家的post-update-cmd。我的代码是用PHP 7编写的,我认为composer的脚本调用运行的是旧版本,因为我在执行php artisan ide-helper:generate时遇到语法错误。在终端中手动运行命令不会触发任何错误。

如何指定或配置composer的php以使用特定的php路径?使用@php,由于路径无效,似乎不像“工匠”那样工作:

  

您引用了一个不存在的脚本@php artisan   IDE-助手:生成

这是我的composer.json:

...
"post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan ide-helper:generate",
            "php artisan ide-helper:meta",
            "php artisan optimize"
        ]
...

3 个答案:

答案 0 :(得分:2)

我收到了类似的错误(我的特定错误是最终脚本,@ php artisan optimize)

Composer已经正确使用PHP 7.1。运行composer selfupdate修复了这个错误。

答案 1 :(得分:0)

因此,即使我的〜/ .bash_profile将php指向新版本,作曲家也会以某种方式运行旧的PHP。

为证明这一点,执行php -v显示的是PHP 7.执行composer exec 'php -v'时显示的是PHP 5.6。

所以在被这几天困扰之后,我终于尝试了这个。显然,〜/ .bash_profile的顺序很重要。

我改变了这个:

alias composer="php /usr/local/bin/composer.phar"
export PATH=/Applications/MAMP/bin/php/php7.0.8/bin:$PATH

要:

export PATH=/Applications/MAMP/bin/php/php7.0.8/bin:$PATH
alias composer="php /usr/local/bin/composer.phar"

并执行source ~/.bash_profile

重新加载配置文件

现在composer exec 'php -v'显示了php 7!

答案 2 :(得分:0)

首先检查你的php版本。

将此命令输入命令提示符(cmd):php -v

如果显示错误版本,则会发生冲突。

通过查找php(cmd)的来源找到有冲突的应用:php --ini

现在提示符将告诉您文件的来源。 然后,您可以卸载托管旧php文件的应用程序。然后你的系统应该自动使用更新的php。