运行 带有 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 installnpm run start 可能会做类似 buildserve 的事情。相比之下,我无法相信这设置起来如此困难。

非常感谢任何建议或帮助!

编辑:当我尝试从任一地址的前端访问我的服务器时,我得到: 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 serveDocument 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', ],

通过http://localhost/basic/web/

访问应用程序

注意:尝试使用 xammp 进行 php 本地开发,您不会后悔的

我成功了。使用 WAMP 托管:

  1. 将整个服务器代码文件夹放在 www/(在 WAMP 安装目录中)

  2. 编辑 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}">
  1. 编辑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 上线。