在 Windows 中运行独立的 PHP 应用





5.00/5 (4投票s)
Windows 内置的便携式 nginx+php+mysql
引言
存在各种在 Windows 中“便携式”安装 PHP 堆栈的工具。 它们都要求一些手动下载、交互、启动/停止等。 这是一个您可以链接到应用程序的静态库,用于在 Windows 中运行 PHP 代码。
该库使用 ZipUtils 来处理 ZIP 档案。
技术栈
该库将配置
- Nginx,优秀的 Web 服务器。 该库包含版本 1.23.3。 我从 https://nginx.ac.cn/en/download.html 获取了它。
- PHP,目前是 8.2.2,我从这里 获取了“线程安全”zip 文件。
- MariaDB MySQL 服务器,目前是 10.10.2。 我从 这里 获取了它。
通过删除 NEED_PHP
和 NEED_MDB
的定义,如果您不需要 PHP 和 MySQL,可以删除它们。
Using the Code
//
RUNWW w;
w.hIcon = LoadIcon(h, L"ICON_1");
w.nginx = { nginx.data(),nginx.size() };
w.root = { f.data(),f.size() };
w.php = { php.data(),php.size() };
w.mdb = { mdb.data(),mdb.size() };
w.PHPPort = 0;
w.NginxPort = 0;
w.MDBPort = 51000;
w.DataFolder = L"c:\\ww_data";
w.WhereAt = L"c:\\ww_apps";
RunWW(w);
//
您需要传递用于 nginx、php、mariaDB 和您的文件根目录的 zip 内存。 此外,您可以为 PHP 和 Nginx 端口传递零。 对于 MySQL,您也可以传递 0
,但随后您将不得不从可执行文件中重写您的 PHP 脚本以连接到服务器。
WhereAt 文件夹是放置应用程序二进制文件的地方。 在上面的示例中,您有以下安装:
- nginx,在 c:\ww_apps\nginx 中
- PHP,在 c:\ww_apps\php 中
- MariaDB,在 c:\ww_apps\mdb 中
该库会在 nginx/conf 文件夹内重新创建 nginx.conf,以匹配服务器名称、端口和 PHP 参数。
该库会重新创建 php.ini,以加载最常见的 PHP 扩展。
DataFolder 文件夹是放置
- 您的应用程序 PPH 文件的根文件夹(在本例中,在 c:\ww_data\html 中)。
- MySQL 数据文件夹 (c:\ww_data\mdb)
您可以将现有文件夹作为 DataFolder 传递,并且不解压 zip 文件。 在这种情况下,该库使用现有的安装文件夹(其中包含 "html" 文件夹用于 HTML nginx PHP 代码,"mdb" 文件夹用于 MySQL)。
此外,该库会自动在 MySQL 数据文件夹中创建一个数据库 "db1",您可以将其更改为任何您想要的名称。 您也可以创建一个新用户(而不是默认的 "root")。
最后,RunWW()
运行服务器并在任务栏中创建一个图标,同时使用您的项目的根 URL 启动浏览器。 当用户右键单击托盘图标并选择退出时,此函数将返回。
当此函数返回时,您的应用程序应该保留数据文件夹(即,通过将其压缩到存档中,或以其他方式保留它)直到下次使用。 WhereAt 文件夹可以随时重新创建。
测试代码
测试解决方案使用此库来运行单个 index.php,该文件创建一个 SQLite3 数据库并连接到 MySQL 并创建一个表。
该库包含 xdebug
。 作为一个 PHP 扩展安装,并配置为在调用 xdebug_break()
时连接到 localhost:9003(检查 launch.json 和 php.cpp 以进行修改)。 如果您使用 Test 的数据文件夹启动 VSCode 并启动 xdebug
,则默认的 index.php 将中断。
历史
- 2023年2月6日 - 首次发布