PHP打包成EXE无法直接写入版权信息,需通过ExeOutput等工具在Version Information中设置CompanyName、LegalCopyright等字段,或用Resource Hacker手动注入VERSIONINFO资源。

PHP 打包成 EXE 本身不支持直接写入版权信息
PHP 是解释型语言,所谓“打包成 EXE”实际是用第三方工具(如 ExeOutput for PHP、PHP Desktop 或 WebCompiler)把 PHP 运行时 + 你的脚本 + 一个轻量浏览器封装进 Windows 可执行文件。这类 EXE 的文件属性(如“版权”“公司名称”“产品版本”)不由 PHP 控制,而是由打包工具或其调用的资源编译器(如 rc.exe)决定。
ExeOutput for PHP 中设置版权信息的实操步骤
这是目前对 Windows 文件属性支持最直接的 PHP 打包工具。它内置资源编辑功能,可修改最终 EXE 的版本资源(VERSIONINFO):
- 在项目设置中打开 “Application → Version Information” 页签
- 勾选
Enable version information - 填写以下字段(会映射到 Windows 文件属性):
CompanyName→ “版权所有者”字段显示内容
LegalCopyright→ “版权”字段(建议填© 2024 Your Name or Company. All rights reserved.)
ProductName→ “文件描述”和“产品名称”
FileVersion和ProductVersion→ 支持1.0.0.0格式 - 注意:修改后必须重新
Build → Build Project,仅“Run”不会更新资源
用 Resource Hacker 手动注入版权信息(通用补救法)
如果打包工具不支持,或你用的是自定义封装(比如用 UPX + PHP-CGI + AutoIt),可用 Resource Hacker(免费工具)后期注入:
- 下载并运行
ResourceHacker.exe - 打开已生成的 EXE → 左侧树状结构展开
Version Info → 1 → 1033 - 右键
1033→Modify,在文本框中编辑StringFileInfo块 - 确保包含这些键(大小写敏感,不可缺):
"CompanyName"="Your Company Inc." "LegalCopyright"="© 2024 Your Name. All rights reserved." "FileDescription"="My PHP Tool" "ProductName"="My PHP Tool" "FileVersion"="1.2.0.0" "ProductVersion"="1.2.0.0"
- 点击
Compile Script→Save覆盖原文件(建议先备份)
为什么有些工具打出来的 EXE 没有版权字段?
根本原因在于:EXE 资源节(.rsrc)未嵌入 VERSIONINFO 结构。常见情况包括:
立即学习“PHP免费学习笔记(深入)”;
-
PHP Desktop默认不生成版本资源,需手动改源码或用外部工具注入 - 用
AutoIt封装时,若没调用#AutoIt3Wrapper_Res_Field指令,就不会写入 - 某些精简版打包器(如旧版
ZZEE PHPExe)完全跳过资源处理 - Windows 对无
VERSIONINFO的 EXE 显示“无法显示该文件的属性”,版权栏为空白
真正起作用的永远是 Windows 加载器读取的 PE 文件资源,不是 PHP 代码里的注释或 phpinfo() 输出。别在 index.php 里写 // © 2024 My App 期待它出现在文件属性里——那只是注释,不会进 EXE 资源节。











