You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

为PHP Desktop配置MySQL:无需XAMPP实现Windows可执行PHP应用数据库支持

我之前刚好折腾过把PHP Desktop应用打包成带内置MySQL和phpMyAdmin的单exe,完全不用用户装XAMPP,给你一步步拆解怎么做:

1. 搞定嵌入式/便携版数据库(推荐MariaDB,比MySQL更省心)

MySQL官方的嵌入式版本配置起来有点麻烦,不如用免安装的MariaDB压缩包,步骤如下:

  • 下载对应Windows版本的MariaDB zip包(选32/64位和你的PHP Desktop匹配),解压到你的PHP Desktop项目根目录,命名为mysql(比如./mysql/
  • 初始化无密码的root用户:打开命令行,进入mysql/bin/目录,执行mysqld --initialize-insecure,这会自动生成data目录和无密码的root账号,刚好适合嵌入式场景
  • 配置MariaDB:复制mysql/my-small.inimysql/my.ini,修改关键参数:
    [mysqld]
    datadir=../data  # 用相对路径,确保应用放哪都能用
    port=3307  # 避开默认3306端口,防止和用户本地的MySQL冲突
    bind-address=127.0.0.1
    skip-networking=1  # 不需要远程连接的话开这个,更安全
    character-set-server=utf8mb4
    
  • 写启动/停止脚本:在项目根目录创建两个bat文件:
    • start_mysql.bat
      @echo off
      cd mysql/bin
      start /B mysqld --defaults-file=../my.ini
      
    • stop_mysql.bat
      @echo off
      cd mysql/bin
      mysqladmin -u root shutdown
      
2. 集成phpMyAdmin到应用里

要让用户能可视化管理数据库,直接把phpMyAdmin塞到PHP Desktop的web目录里就行:

  • 下载phpMyAdmin的稳定版zip包,解压到PHP Desktop的www/目录下,命名为phpmyadmin(比如./www/phpmyadmin/
  • 配置phpMyAdmin:复制www/phpmyadmin/config.sample.inc.phpconfig.inc.php,修改连接参数:
    <?php
    $cfg['Servers'][$i]['host'] = '127.0.0.1';
    $cfg['Servers'][$i]['port'] = '3307';  # 和刚才MariaDB的端口一致
    $cfg['Servers'][$i]['user'] = 'root';
    $cfg['Servers'][$i]['password'] = '';  # 无密码登录
    $cfg['AllowNoPassword'] = true;  # 允许无密码登录
    $cfg['PmaAbsoluteUri'] = '/phpmyadmin/';  # 确保路径正确
    
  • 可以在你的应用首页加个入口链接,比如<a href="/phpmyadmin/">管理数据库</a>,方便用户访问
3. 让PHP Desktop自动管理数据库服务

核心是让数据库随应用启动/关闭,不用用户手动操作:

  • 启动时自动开MySQL:在你的应用入口文件(比如index.php)开头加一段PHP代码,检查MySQL进程是否存在,不存在就启动:
    <?php
    // 检查mysqld进程是否在运行
    $processCheck = shell_exec('tasklist /FI "IMAGENAME eq mysqld.exe" 2>NUL | find /I /N "mysqld.exe"');
    if (empty($processCheck)) {
        // 启动MySQL,用start /B后台运行,不弹命令行窗口
        shell_exec('start /B start_mysql.bat');
        // 给3秒初始化时间,避免连接失败
        sleep(3);
    }
    
  • 关闭时自动停MySQL:修改PHP Desktop的settings.json,添加退出时执行的脚本:
    {
      "external_scripts": {
        "on_exit": "stop_mysql.bat"
      }
    }
    
    这样用户关闭应用窗口时,会自动执行停止脚本,关掉MySQL进程
4. 打包成单exe文件

最后把所有文件打包成一个可执行程序,用户双击就能用:

  • 把PHP Desktop的主程序(比如phpdesktop-chrome.exe)、你的web代码、mysql文件夹、phpmyadmin、两个bat脚本都放在同一个目录
  • 用打包工具(比如Inno Setup或者7-Zip自解压包)把整个目录打包成一个exe:
    • 如果用7-Zip,选择“添加到压缩文件”,勾选“创建自解压格式压缩文件”,然后在“高级”里设置解压后自动运行主程序
    • 如果用Inno Setup,可以写个脚本,把所有文件打包进去,安装后自动创建快捷方式,启动主程序
5. 踩坑提醒
  • 一定要用和PHP Desktop的PHP版本兼容的MariaDB/MySQL,不然可能出现连接错误
  • 测试时用普通用户权限运行,确保MySQL能创建data目录和写入日志(不要用管理员权限测试,避免权限差异)
  • 如果用户电脑上有杀毒软件,可能会误报MySQL进程,最好提前在说明里提一下
  • 可以把mysql/data目录加入.gitignore(如果用Git的话),避免提交大文件

内容的提问来源于stack exchange,提问作者Tolga20

火山引擎 最新活动