内置 Web 服务器的 CakePHP:您可以指定使用的 PHP 二进制文件吗

问题描述 投票:0回答:1

在 CakePHP 中有一个内置的 Web 服务器,可用于开发。

这可以从

bin/cake server
开始,然后默认在 http://localhost:8765 上为应用程序提供服务

就我而言,我有一个旧的 CakePHP 3.8.13 应用程序。在我的 MacBook 上,全局

php
可执行文件是 PHP 版本 8:

% php -v
PHP 8.0.27 (cli) (built: Jan 12 2023 15:36:37) ( NTS )

这是有问题的,因为 CakePHP 3.8.13 不是为在 PHP 8 上运行而设计的。它在 PHP 7 上运行。

在我的 MacBook 上,我在

/usr/local/opt/
中安装了 PHP 版本 7.1、7.2、7.3 和 8.0。这些已经用 brew 安装了。所以如果我想执行 PHP 7.2 版,我可以这样做:

% /usr/local/opt/[email protected]/bin/php -v
PHP 7.2.34 (cli) (built: Jan 21 2023 06:18:05) ( NTS )

我的问题是:我怎样才能让

bin/cake server
使用诸如PHP 7.2之类的二进制文件,而不是全局安装的PHP 8版本?

我试过

alias php=/usr/local/opt/[email protected]/bin/php
,这最初似乎是有效的,因为随后执行
php
它使用适当的版本:

% alias php=/usr/local/opt/[email protected]/bin/php
% php -v
PHP 7.2.34 (cli) (built: Jan 21 2023 06:18:05) ( NTS )

但是,如果我随后停止并重新启动内置的 CakePHP Web 服务器,它会在日志中显示以下内容:

% bin/cake server
built-in server is running in http://localhost:8765/
You can exit with `CTRL-C`
[Wed Apr 19 09:35:19 2023] PHP 8.0.27 Development Server (http://localhost:8765) started

请注意,这不是我想要的 PHP 8.0.27。

php cakephp
1个回答
0
投票

服务器命令通过 PHP 的

system()
调用创建一个新的 shell,并且别名不会传播到子 shell。

从 CakePHP 4.1.6 开始,服务器命令可以识别

PHP
环境变量,因此您可以执行以下操作:

export PHP=/path/to/php ; bin/cake server

对于早期版本,您可以创建自己的使用环境变量的 CakePHP 命令,手动启动 PHP 内置服务器(

/path/to/php -S localhost:8765 -t /path/to/webroot/
),或者使用例如 Homebrew 管理 PHP 版本,如@Cbroe 在评论。

© www.soinside.com 2019 - 2024. All rights reserved.