php - 无法更改 Symfony 4.12 中的 PHP 默认版本

标签 php symfony xampp laragon

我想创建一个 Symfony 项目。关于 php 版本,我和很多人有同样的问题:Symfony 使用了错误的版本。

λ php -version
PHP 7.4.1 (cli) (built: Dec 17 2019 19:24:02) ( ZTS Visual C++ 2017 x64 )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

λ symfony -V
Symfony CLI version v4.12.4 (Tue Jan 14 13:09:08 UTC 2020)

λ symfony check:requirements

Symfony Requirements Checker
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

> PHP is using the following php.ini file:
C:\xampp\php\php.ini

> Checking Symfony requirements:

..............WWW......W..


 [OK]
 Your system is ready to run Symfony projects

我安装了 Xampp,但我在 Windows 10 上使用带有 7.4.1 的 Laragon 并希望使用那个,但 Symfony 告诉我:

λ symfony local:php:list
┌─────────┬─────────────────────────────────────────────┬─────────┬─────────┬─────────────┬─────────┬─────────┐
│ Version │                  Directory                  │ PHP CLI │ PHP FPM │   PHP CGI   │ Server  │ System? │
├─────────┼─────────────────────────────────────────────┼─────────┼─────────┼─────────────┼─────────┼─────────┤
│ 7.3.10  │ C:\xampp\php                                │ php.exe │         │ php-cgi.exe │ PHP CGI │ *       │
│ 7.4.1   │ C:\laragon\bin\php\php-7.4.1-Win32-vc15-x64 │ php.exe │         │ php-cgi.exe │ PHP CGI │         │
└─────────┴─────────────────────────────────────────────┴─────────┴─────────┴─────────────┴─────────┴─────────┘

The current PHP version is selected from default version in $PATH

即使在我的 $PATH 中没有 Xampp 或 php 7.3.1 的痕迹。

λ echo %path:;=&echo.%
C:\Program Files\cmder_mini\bin
C:\Program Files\cmder_mini\vendor\bin
C:\Program Files\cmder_mini\vendor\conemu-maximus5\ConEmu\Scripts
C:\Program Files\cmder_mini\vendor\conemu-maximus5
C:\Program Files\cmder_mini\vendor\conemu-maximus5\ConEmu
C:\Program Files (x86)\Common Files\Oracle\Java\javapath
C:\Windows\system32
C:\Windows
C:\Windows\System32\Wbem
C:\Windows\System32\WindowsPowerShell\v1.0\
C:\Windows\System32\OpenSSH\
C:\Program Files\nodejs\
C:\Program Files\Git\cmd
C:\ProgramData\ComposerSetup\bin
C:\laragon\bin\php\php-7.4.1-Win32-vc15-x64\php.exe
C:\Program Files\Symfony
C:\laragon\bin
C:\laragon\bin\apache\httpd-2.4.35-win64-VC15\bin
C:\laragon\bin\composer
C:\laragon\bin\laragon\utils
C:\laragon\bin\mysql\mysql-5.7.24-winx64\bin
C:\laragon\bin\nginx\nginx-1.16.0
C:\laragon\bin\ngrok
C:\laragon\bin\notepad++
C:\laragon\bin\php\php-7.4.1-Win32-vc15-x64
C:\laragon\bin\putty
C:\laragon\bin\redis\redis-x64-3.2.100
C:\laragon\bin\telnet
C:\laragon\usr\bin
C:\Program Files\Sublime Text 3\
C:\Users\User\AppData\Local\Yarn\config\global\node_modules\.bin
C:\Users\User\AppData\Roaming\Composer\vendor\bin
C:\Users\User\AppData\Roaming\npm
C:\Ruby26-x64\bin
C:\Users\User\AppData\Local\Microsoft\WindowsApps
C:\Program Files\JetBrains\PhpStorm 2019.2.3\bin
C:\Program Files\JetBrains\DataGrip 2019.2.5\bin
C:\Program Files\Git\cmd
C:\Program Files\Git\mingw64\bin
C:\Program Files\Git\usr\bin
C:\Program Files\cmder_mini

(我检查了用户和系统 $PATH)

我试图通过在项目目录中运行来强制 Symfony 使用 7.4.1:

λ echo "7.4.1"> .phpversion

当我运行时

λ symfony local:php:refresh

λ symfony local:php:list

我得到:

λ WARNING the current dir requires PHP "7.4.1" (.php-version from current dir: C:\laragon\www\CMS_test\.php-version), but this version is not available

我还尝试重命名 Xampp 目录名称,事实上,这“有效”。

C:\
λ symfony check:requirements
php does not seem to be available under C:\xampp\php


C:\
λ symfony local:php:list
┌─────────┬─────────────────────────────────────────────┬─────────┬─────────┬─────────────┬─────────┬─────────┐
│ Version │                  Directory                  │ PHP CLI │ PHP FPM │   PHP CGI   │ Server  │ System? │
├─────────┼─────────────────────────────────────────────┼─────────┼─────────┼─────────────┼─────────┼─────────┤
│ 7.4.1   │ C:\laragon\bin\php\php-7.4.1-Win32-vc15-x64 │ php.exe │         │ php-cgi.exe │ PHP CGI │ *       │
└─────────┴─────────────────────────────────────────────┴─────────┴─────────┴─────────────┴─────────┴─────────┘

The current PHP version is selected from default version in $PATH

但我并不真正满意这个解决方案。

我已经在 StackOverflow 上搜索了几个小时,尝试重新安装 Symfony,重新启动计算机,询问 friend 等等,似乎没有人有其他解决方案。

那么,为什么 Symfony 会在 Xampp 目录中搜索 php?是否可以选择另一个像 Laragon 这样的默认值?有什么想法吗?

最佳答案

我刚刚在我的 Windows 环境中遇到了这个问题。出于某种原因,当我使用 echo "7.2"> .php-version 创建 .php-version 时,symfony 没有正确读取它。

一旦我从我的 IDE 中删除并创建了一个新的文本文件,问题就消失了。可能使用 vscode code .php-version 或使用文件资源管理器创建它也可以(我还没有尝试过)。

编辑:我刚刚尝试使用 VS Code 和记事本创建文件 - 两者都有效。但是我仍然不知道为什么在使用 echo 创建时它不起作用...

Edit2:我想我明白了。看起来 PowerShell 的 echo ""> file 将使用 UTF-16 编码创建文件。将文件转换为 UTF-8 后,它按预期工作。

关于php - 无法更改 Symfony 4.12 中的 PHP 默认版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59887045/

相关文章:

php - 如何在 services.yml 文件中添加多个事件作为 Doctrine symfony 中的事件监听器

php - 来自 php MySQL 查询的 JSON 显示不存在的列

php - 在发票网格中添加自定义列 - Magento 1

php - FOSRestBundle 仅监听前缀

php - 带占位符的 MySQL 查询不起作用

虚拟主机上的 Symfony 2

python - 如何使用python将网页连接到mod_wsgi?

使用 .frm 文件和 ibdata 文件恢复 MySQL InnoDB 数据库

php - $_SERVER ['SERVER_NAME' ] 有什么好的替代品吗?

php - PHP 中的 scandir() 太慢了