在 VSCode 终端中出现错误的 PHP 版本/可执行文件,但在 Mac 终端中完美运行。

5
我刚把我的 Mac M1 升级到 Big Sur 11.5.2,似乎在 VSCode 中出了问题。我无法使用最新的 homebrew php 版本。
在 VSCode 中,它指向的是 /usr/bin/php,这是 Mac 内置的 php,而不是我使用 homebrew 安装的版本。我尝试了各种方法并更改了路径,但仍旧无济于事。
我查看了与我的问题类似的一个问题,它建议使用 Homebrew,但我已经在使用了,所以我不确定我做错了什么。
我正在 VSCode 终端中运行 PHPUnit 测试,但是出现了以下错误:
/Users/themyth/App/Sites/MapFramework/map -> ./vendor/bin/phpunit tests                           
/usr/bin/php declares an invalid value for PHP_VERSION.
This breaks fundamental functionality such as version_compare().
Please use a different PHP interpreter.
/Users/themyth/App/Sites/MapFramework/map ->

然而,当我在Mac终端运行相同的命令且进入相同的文件夹时,它可以完美地运行:

/Users/themyth/app/Sites/MapFramework/Map -> ./vendor/bin/phpunit tests                                            
PHPUnit 9.5.8 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.0.9
Configuration: /Users/themyth/App/Sites/MapFramework/Map/phpunit.xml

...R                                                                4 / 4 (100%)

Time: 00:00.004, Memory: 6.00 MB

There was 1 risky test:

1) tests\map\core\exception\MapExceptionTest::testDisplayMethodShowsBasicStaticHtml
This test did not perform any assertions

/Users/themyth/App/Sites/MapFramework/Map/tests/map/core/exception/MapExceptionTest.php:16

OK, but incomplete, skipped, or risky tests!
Tests: 4, Assertions: 4, Risky: 1.
/Users/themyth/app/Sites/MapFramework/Map -> 

当我在两个终端中输入 which php 命令时,结果不同:

在 Mac 终端中:

/Users/themyth/app/Sites/MapFramework/Map -> which php
/opt/homebrew/bin/php

在 VSCode 终端中:

/Users/themyth/App/Sites/MapFramework/map -> which php
/usr/bin/php
/Users/themyth/App/Sites/MapFramework/map -> 

我应该如何将VSCode指向正确的PHP版本?在更新Big Sur之前,我认为这种情况从未发生过,我不确定要编辑什么。

我尝试打开settings.json文件,但找不到与此相关的信息,也不确定如何进行编辑。

欢迎任何建议。


编辑 1:

我认为这个问题是由于我在VSCode上安装了PHPIntellisense而引起的,但我不能确定。我知道的是在常规终端中已经安装并正常运行homebrew PHP,但我不知道如何配置VSCode来指向它。


编辑 2:

我尝试编辑settings.json文件,但没有任何改变:

{
    "workbench.colorTheme": "Monokai Dimmed",
    "security.workspace.trust.untrustedFiles": "open",
    "redhat.telemetry.enabled": false,
    "php.validate.executablePath": "/opt/homebrew/bin/php",
    "php.executablePath": "/opt/homebrew/bin/php"
}

编辑3

我已经完全卸载了VSCode并重新安装了一切,以便从头开始,但是仍然出现相同的问题。 这是当前的settings.json文件的外观:

{
    "workbench.colorTheme": "Default Dark+",
    "php.validate.executablePath": "/opt/homebrew/bin/php"
}

在VSCode终端中运行哪个php命令,我总是得到同样的结果 /usr/bin/php。

这个问题一直存在,我不确定是否与OSX更新有关。

如何配置VSCode终端与Mac终端完全相同?

我还打开了另一个项目,在其中我使用Symfony尝试创建一个基本控制器,但也无法工作。 我现在已经编辑了问题使其更通用:

php bin/console make:controller test 我收到以下错误消息:

Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.0.0". You are running 7.3.24-(to be removed in future macOS)

最令人沮丧的是,这似乎非常简单,但我不知道该如何解决这个问题。

5个回答

10

我遇到了同样的问题。打开你的终端并输入以下内容:

nano ~/.zshrc

文件顶部有这个:

# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH

把这一行放在下面:

的标签后面。

export PATH=/opt/homebrew/opt/php@8.0/bin:$PATH

保存并关闭,重新启动您的终端,它将正常工作。

NB: 我写的是php@8.0,但您可以在用homebrew安装的所有版本上执行此操作


谢谢,我会试一下。我的唯一问题是我更喜欢VSCode终端能够直接正常工作。为什么它可以正确识别其他所有内容,但不能识别PHP呢?还有一件事,你的路径是/opt/homebrew/opt/php,但在我的Mac M1上是/opt/homebrew/bin/php,我应该使用我的路径还是有原因呢? - user16422658
太好了!它能运行,但我只想确保这是正确的解决方案,并且以后也能工作,如果我有软件更新,当涉及到PHP时,VSCode终端仍然与Mac终端不同。 - user16422658
这个方案的另一个问题是如果有更新怎么办?如果我想要切换版本,它需要不断地更新。难道没有其他更加永久优雅的方式来解决这个问题吗? - user16422658

0

你可能正在尝试使用XDebug来运行/调试代码。在这种情况下,即使执行了上述步骤,它仍然无法正常工作!我不得不编辑launch.json文件以添加"runtimeExecutable"(我在两个块中都添加了),使其看起来像这样(使用brew --prefix php查找正确的路径):

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
      {
        "name": "Launch currently open script",
        "type": "php",
        "request": "launch",
        "program": "${file}",
        "cwd": "${fileDirname}",
        "port": 0,
        "runtimeArgs": [
          "-dxdebug.start_with_request=yes"
        ],
        "runtimeExecutable": "/opt/homebrew/bin/php",
        "env": {
          "XDEBUG_MODE": "debug,develop",
          "XDEBUG_CONFIG": "client_port=${port}"
        }
      },
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "runtimeExecutable": "/opt/homebrew/bin/php"
        }
    ]
}

0
如果您正在使用Mamp,只需勾选此复选框即可。 在Mac上使用Mamp时更改php版本

enter image description here

如果您没有使用Mamp,请检查位于~/文件夹中的.zshrc文件


0

你有检查用户设置吗,settings.json。找到 "php.executablePath": "c:\php80\php.exe",


0
如果您使用的是XAMPP而不是Homebrew,请按照以下两个步骤操作: 1. 打开终端并输入命令:nano ~/.zshrc 2. 在打开的文件中添加以下内容:export PATH=/Applications/XAMPP/bin:$PATH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接