在Windows中运行PHP代码的静态库

Windows操作系统中,运行PHP代码通常需要手动下载、交互、启动/停止等操作。然而,现在有一个静态库可以直接链接到应用程序中,从而在Windows上运行PHP代码。这个库使用了ZipUtils来操作ZIP归档文件。

库的配置

这个库会配置:

  • Nginx,一个优秀的Web服务器。库中包含了版本1.23.3,可以从下载。
  • PHP,目前版本为8.2.2,可以从相关网站下载“线程安全”的ZIP包。
  • MariaDBMySQL服务器,目前版本为10.10.2,可以从相关网站下载。

如果不需要PHP和MySQL,可以通过移除NEED_PHP和NEED_MDB的定义来移除它们。

使用代码

以下是C++代码示例,展示了如何使用这个库:

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端口设置为0。对于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"文件夹用于nginxPHP代码和"mdb"文件夹用于MySQL)。

此外,库会自动在MySQL数据文件夹中创建一个名为"db1"的数据库,可以将其更改为想要的任何名称。也可以创建一个新用户(而不是默认的"root")。

最后,RunWW()函数运行服务器并在任务栏创建一个图标,同时启动浏览器并打开项目的根URL。当用户右键单击托盘图标并选择退出时,此函数返回。

当此函数返回时,应用程序应该保留数据文件夹(例如,通过将其压缩到归档中,或以其他方式保留)直到下次使用。WhereAt文件夹可以随时重新创建。

测试代码

测试解决方案利用这个库来运行一个单独的index.php,它创建了一个SQLite3数据库,并连接到MySQL并创建了一个表。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485