运行 带有 WAMP 的本地 Yii2 服务器
Running a local Yii2 server with WAMP
我是一名前端 JS 开发人员,我已经开始从事一个具有 PHP 后端 运行 Yii2 框架的项目。该项目没有安装说明,所以我想边走边弄明白,但是来自 Node.js...这很令人困惑。
我下载并安装了 WAMP,使用 MyPHPAdmin 为 API 创建了 MySQL 数据库,并从转储中导入了数据。那行得通,我可以看到表格和数据。现在,当我转到 localhost
时,我看到 WAMP 正在 运行ning。我尝试了示例 Yii 项目,并且还在 localhost/yii-test/web
.
运行s
根据 Yii,我将通过将整个 API 目录移动到 WAMP 安装的 /www
目录来为这个 API 提供服务。现在,如果我转到 localhost/fania-api
,我会看到我的服务器的目录列表。对我来说,这表示 API 可以在本地访问。
我已经将我的前端的 .env
配置为指向 localhost/fania-api
,但是当我发送任何请求时我收到一个 CORS 错误,我假设它掩盖了一些 404 或 500 错误。现在有趣的是我得到的 .env 带有 URL http://fanintelligence.localhost
,而不是 Yii 给出的 localhost/fania-api
.
所以我的问题是这两件事如何结合在一起?我安装了 WAMP 并在默认端口设置了 MySQL 数据库,但是我的 API 怎么知道它在那里?我怎么知道它是否是正确的端口?那么这两个不同的 URL 又如何呢?
此外 API 不包含 /web 文件夹,不确定这是否是一个问题,但我也无法使用 php yii serve
提供它。如果这是我要克隆的 Node.js 服务器,npm install
和 npm run start
可能会做类似 build
和 serve
的事情。相比之下,我无法相信这设置起来如此困难。
非常感谢任何建议或帮助!
编辑:当我尝试从任一地址的前端访问我的服务器时,我得到:
Access to fetch at 'http://localhost/fania-api/oauth2/token?accessToken=undefined' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
/fania-api/oauth2/token?accessToken=undefined:1 Failed to load resource: net::ERR_FAILED
但是我不认为这是一个实际的 CORS 错误,因为之前的开发人员也使用本地进行测试,因此 CORS 策略将允许这样做。我的猜测是我指向的地址不正确或者服务器实际上不存在。
如果我尝试 运行 php yii serve
:
Document root "C:\Users\hesel\dev\repo\eartotheground\fania-api\console/web" doe
s not exist.
但错误行为的症结在于无法连接到假定的实时本地服务器(它甚至是实时的吗?我怎么知道?)。
如果yii是通过composer安装的,进入项目,打开终端运行 ./yii serve
如果 yii 已经下载为存档文件:
在项目的文件夹中打开 terminal/cmd 提示符并
输入 composer install
以确保 vendor 中的所有软件包都已安装。
已达到 config/web。php
'request' => [
'cookieValidationKey' => 'put your random generated string',
],
访问应用程序
注意:尝试使用 xammp 进行 php 本地开发,您不会后悔的
我成功了。使用 WAMP 托管:
将整个服务器代码文件夹放在 www/
(在 WAMP 安装目录中)
编辑 wamp64\bin\apache\apache{version}\conf\httpd.conf
:
DocumentRoot "${INSTALL_DIR}/www/{your project}/{optional public folder}"
<Directory "${INSTALL_DIR}/www/{your project}/{optional public folder}">
- 编辑
wamp64\bin\apache\apache{version}\conf\extra\httpd-vhosts.conf
:
<VirtualHost {project name}:80>
ServerName {project name}.localhost
ServerAlias {project name}.localhost
DocumentRoot "${INSTALL_DIR}/www/{your project}/{optional pub"
<Directory "${INSTALL_DIR}/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
您的服务器现在应该在 {project name}.localhost
上线。
我是一名前端 JS 开发人员,我已经开始从事一个具有 PHP 后端 运行 Yii2 框架的项目。该项目没有安装说明,所以我想边走边弄明白,但是来自 Node.js...这很令人困惑。
我下载并安装了 WAMP,使用 MyPHPAdmin 为 API 创建了 MySQL 数据库,并从转储中导入了数据。那行得通,我可以看到表格和数据。现在,当我转到 localhost
时,我看到 WAMP 正在 运行ning。我尝试了示例 Yii 项目,并且还在 localhost/yii-test/web
.
根据 Yii,我将通过将整个 API 目录移动到 WAMP 安装的 /www
目录来为这个 API 提供服务。现在,如果我转到 localhost/fania-api
,我会看到我的服务器的目录列表。对我来说,这表示 API 可以在本地访问。
我已经将我的前端的 .env
配置为指向 localhost/fania-api
,但是当我发送任何请求时我收到一个 CORS 错误,我假设它掩盖了一些 404 或 500 错误。现在有趣的是我得到的 .env 带有 URL http://fanintelligence.localhost
,而不是 Yii 给出的 localhost/fania-api
.
所以我的问题是这两件事如何结合在一起?我安装了 WAMP 并在默认端口设置了 MySQL 数据库,但是我的 API 怎么知道它在那里?我怎么知道它是否是正确的端口?那么这两个不同的 URL 又如何呢?
此外 API 不包含 /web 文件夹,不确定这是否是一个问题,但我也无法使用 php yii serve
提供它。如果这是我要克隆的 Node.js 服务器,npm install
和 npm run start
可能会做类似 build
和 serve
的事情。相比之下,我无法相信这设置起来如此困难。
非常感谢任何建议或帮助!
编辑:当我尝试从任一地址的前端访问我的服务器时,我得到:
Access to fetch at 'http://localhost/fania-api/oauth2/token?accessToken=undefined' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
/fania-api/oauth2/token?accessToken=undefined:1 Failed to load resource: net::ERR_FAILED
但是我不认为这是一个实际的 CORS 错误,因为之前的开发人员也使用本地进行测试,因此 CORS 策略将允许这样做。我的猜测是我指向的地址不正确或者服务器实际上不存在。
如果我尝试 运行 php yii serve
:
Document root "C:\Users\hesel\dev\repo\eartotheground\fania-api\console/web" doe
s not exist.
但错误行为的症结在于无法连接到假定的实时本地服务器(它甚至是实时的吗?我怎么知道?)。
如果yii是通过composer安装的,进入项目,打开终端运行
./yii serve
如果 yii 已经下载为存档文件: 在项目的文件夹中打开 terminal/cmd 提示符并 输入
composer install
以确保 vendor 中的所有软件包都已安装。
已达到 config/web。php
'request' => [
'cookieValidationKey' => 'put your random generated string',
],
注意:尝试使用 xammp 进行 php 本地开发,您不会后悔的
我成功了。使用 WAMP 托管:
将整个服务器代码文件夹放在
www/
(在 WAMP 安装目录中)编辑
wamp64\bin\apache\apache{version}\conf\httpd.conf
:
DocumentRoot "${INSTALL_DIR}/www/{your project}/{optional public folder}"
<Directory "${INSTALL_DIR}/www/{your project}/{optional public folder}">
- 编辑
wamp64\bin\apache\apache{version}\conf\extra\httpd-vhosts.conf
:
<VirtualHost {project name}:80>
ServerName {project name}.localhost
ServerAlias {project name}.localhost
DocumentRoot "${INSTALL_DIR}/www/{your project}/{optional pub"
<Directory "${INSTALL_DIR}/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
您的服务器现在应该在 {project name}.localhost
上线。