a tool to turn command-line php scripts into exe files

Tags: PL


php2exe takes your php source code and creates an .exe file that has the same effect as running php file.php. It is intended to make command-line php scripts easier to distribute.

As an example, php2exe is also distributed as an exe file.

  php2exe [options] file.php

  --force                          Delete target directory if it exists
  --help                           Display usage
  --no-cleanup                     Don't remove temporary files
  --output {directory}             Set target directory (default 'output')
  --vc-ver {number}                Set target VS version (default '12' ie 2013)
  --version {string}               Set target PHP runtime
                                    (default '5.6.4-nts-Win32-VC11-x86')

php2exe works by creating a new program that includes PHP as an embedded language interpreter using the embed SAPI. Your source code is compiled into the binary and then passed to the embedded interpreter. The source code is obfuscated in the binary, it would take nontrivial effort to extract but it is still recoverable.

php2exe does not process multiple files, if you want to process a multi-file project then you should first pack your project into a single file using phppack.

Certain library files must be present to build the final .exe file. Download the php- and php-devel-pack zip files for your target runtime version from and place them in the same directory as php2exe. You can use the --version option to specify which zip files should be used.

Visual Studio installation is required to use php2exe. It's not required to run the resulting exe, but the Visual C++ runtimes are required. It's best if it matches the version of the package so that you are not required to ship two versions of the Visual C++ runtimes. You can let php2exe know your Visual Studio version by the --vc-ver option (tested with Visual Studio 2013).

By default php2exe does not load any modules. You can load modules yourself by the dl() function (note that this requires a non-thread-safe build of PHP).