在Windows操作系统中,运行PHP代码通常需要手动下载、交互、启动/停止等操作。然而,现在有一个静态库可以直接链接到应用程序中,从而在Windows上运行PHP代码。这个库使用了ZipUtils来操作ZIP归档文件。
这个库会配置:
如果不需要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.conf是由库在nginx/conf文件夹内重新创建的,以匹配服务器名称、端口和PHP参数。php.ini也是由库重新创建的,以加载大多数常见的PHP扩展。
DataFolder文件夹是放置以下内容的地方:
可以将现有的文件夹作为DataFolder传递,并且不需要解压缩ZIP。在这种情况下,库将使用现有的安装文件夹(其中包含"html"文件夹用于nginxPHP代码和"mdb"文件夹用于MySQL)。
此外,库会自动在MySQL数据文件夹中创建一个名为"db1"的数据库,可以将其更改为想要的任何名称。也可以创建一个新用户(而不是默认的"root")。
最后,RunWW()函数运行服务器并在任务栏创建一个图标,同时启动浏览器并打开项目的根URL。当用户右键单击托盘图标并选择退出时,此函数返回。
当此函数返回时,应用程序应该保留数据文件夹(例如,通过将其压缩到归档中,或以其他方式保留)直到下次使用。WhereAt文件夹可以随时重新创建。
测试解决方案利用这个库来运行一个单独的index.php,它创建了一个SQLite3数据库,并连接到MySQL并创建了一个表。