Chuyển đổi một tập lệnh PHP thành một cửa sổ độc lập thực thi


128

Tôi muốn tự động hóa một nhiệm vụ khá đơn giản. Để làm điều này, tôi đã viết một đoạn mã PHP nhỏ mà tôi chạy từ dòng lệnh bằng PHP-CLI. Bây giờ tôi muốn bàn giao kịch bản này cho ai đó nhưng tôi không muốn:

  • cho đi mã nguồn
  • yêu cầu anh ta cài đặt PHP trên hệ thống

Có cách nào để tạo phiên bản .exe của tập lệnh PHP không. Tôi thực sự không lo lắng nhiều về việc biên dịch; Tôi lo lắng hơn về việc yêu cầu mọi người cài đặt và cấu hình PHP.


2
bạn đã nghe nói về bamcompile (r) chưa?
SagarPPanchal

1
Đã sử dụng Bambalam trong một số năm. Nó đã bị đình trệ mãi mãi - và hơn thế nữa, nó chỉ tương thích với PHP4.4.4. Tuy nhiên, miễn là bạn không yêu cầu hỗ trợ UTF8 và tương tự và có thể xử lý foreach bị hỏng () và một số người khác, thì nó sẽ phù hợp với bạn. Xin lưu ý rằng không thể xử lý tên tệp UTF8 trong một thư mục với PHP4.4.4. Ngoài ra, hãy nhớ rằng nó tạo các tệp trong% TEMP% không bao giờ bị xóa (php [0-F] {2} .tmp), bạn sẽ cần phải dọn sạch chúng.
Egon_Freeman

Các tệp nhị phân của PHP có thể chạy một cách hợp lý. Bạn chỉ có thể yêu cầu mọi người trích xuất toàn bộ thư mục và tạo một tệp bó thực thi một cái gì đó như "php.exe -c php.ini script.php".
Huỳnh quangGreen5

Câu trả lời:


195

Bánh Đào

http://www.peachpie.io

https://github.com/iolevel/peachpie

Peachpie là trình biên dịch PHP 7 dựa trên Roslyn của Microsoft và được vẽ từ Phalanger nổi tiếng. Nó cho phép PHP được thực thi trong .NET / .NETCore bằng cách biên dịch mã PHP thành MSIL thuần túy.

Phalanger

http://v4.php-compiler.net/

http://wiki.php-compiler.net/Phalanger_Wiki

https://github.com/devsense/phalanger

Phalanger là một dự án được bắt đầu tại Đại học Charles ở Prague và được Microsoft hỗ trợ. Nó biên dịch mã nguồn được viết bằng ngôn ngữ kịch bản PHP thành mã byte CIL (Ngôn ngữ trung gian chung). Nó xử lý bắt đầu một quá trình biên dịch được hoàn thành bởi thành phần trình biên dịch JIT của .NET Framework. Nó không giải quyết việc tạo mã riêng cũng như tối ưu hóa. Mục đích của nó là biên dịch các tập lệnh PHP thành các tập hợp .NET, các đơn vị logic chứa mã CIL và siêu dữ liệu.

Bambalam

https://github.com/xZero707/Bamcompile/

Bambalam PHP EXE Compiler / Embedder là một công cụ dòng lệnh miễn phí để chuyển đổi các ứng dụng PHP sang các ứng dụng Windows .exe độc ​​lập. Các tệp exe được tạo hoàn toàn độc lập, không cần php dll, v.v ... Mã php được mã hóa bằng thư viện Mã hóa Turck MMCache để nó là một giải pháp hoàn hảo nếu bạn muốn phân phối ứng dụng của mình trong khi bảo vệ mã nguồn của mình. Trình chuyển đổi cũng phù hợp để tạo các tệp .exe cho các ứng dụng PHP có cửa sổ (được tạo bằng thư viện WinBinder). Nó cũng tốt để tạo các máy chủ / máy khách PHP Socket độc lập (sử dụng phần mở rộng php_sockets.dll). Nó KHÔNG thực sự là một trình biên dịch theo nghĩa là nó không tạo ra mã máy gốc từ các nguồn PHP, nhưng nó hoạt động!

ZZEE PHPExe

http://www.zzee.com/phpexe/

ZZEE PHPExe biên dịch PHP, HTML, Javascript, Flash và các tệp web khác vào Windows GUI exes. Bạn có thể nhanh chóng phát triển các ứng dụng GUI của Windows bằng cách sử dụng mô hình web PHP quen thuộc. Bạn có thể sử dụng cùng một mã cho các ứng dụng trực tuyến và Windows với ít hoặc không sửa đổi. Nó là một sản phẩm thương mại.

phc-win

http://wiki.swiftlytilting.com/Phc-win

Bcompiler mở rộng PHP được sử dụng để biên dịch mã script PHP thành mã byte PHP. Mã byte này có thể được bao gồm giống như bất kỳ tệp php nào miễn là phần mở rộng bcompiler được tải. Khi tất cả các tệp mã byte đã được tạo, một Trình nhúng đã sửa đổi được sử dụng để đóng gói tất cả các tệp dự án vào exe chương trình.

Đòi hỏi

  • php5ts.dll
  • php_win32std.dll
  • php_bcompiler.dll
  • php-embed.ini

Exeutut

http://www.exeoutput.com/

Thương mại

WinBinder

http://winbinder.org/

WinBinder là một phần mở rộng mã nguồn mở cho PHP, ngôn ngữ lập trình tập lệnh. Nó cho phép các lập trình viên PHP dễ dàng xây dựng các ứng dụng Windows gốc, tạo ra kết quả nhanh chóng và bổ ích với nỗ lực tối thiểu. Ngay cả các tập lệnh ngắn với vài chục dòng có thể tạo ra một chương trình hữu ích, nhờ vào sức mạnh và tính linh hoạt của PHP.

PHPDesktop

https://github.com/cztomczak/phpdesktop

PHP Desktop là một dự án nguồn mở được thành lập bởi Czarek Tomczak vào năm 2012 để cung cấp một cách để phát triển các ứng dụng máy tính để bàn gốc bằng các công nghệ web như PHP, HTML5, JavaScript & SQLite. Dự án này không chỉ là trình biên dịch PHP sang EXE, nó nhúng trình duyệt web (Internet Explorer hoặc Chrome nhúng), máy chủ web Mongoose và trình thông dịch PHP. Quy trình phát triển mà bạn đã sử dụng vẫn giữ nguyên, bước biến một trang web hiện có thành một ứng dụng máy tính để bàn về cơ bản là vấn đề sao chép nó vào thư mục "www /". Sử dụng cơ sở dữ liệu SQLite là tùy chọn, bạn có thể nhúng cơ sở dữ liệu mysql / postgresql trong trình cài đặt của ứng dụng.

Cơn ác mộng PHP

https://github.com/kjellberg/nightrain

Sử dụng PHP Nightrain, bạn sẽ có thể triển khai và chạy các ứng dụng web HTML, CSS, JavaScript và PHP dưới dạng một ứng dụng máy tính để bàn gốc trên các hệ điều hành Windows, Mac và Linux. Các khung PHP phổ biến (ví dụ CakePHP, Laravel, Drupal, v.v ...) được hỗ trợ tốt!

phc-win "ngã ba"

https://github.com/RDashINC/phc-win

Một phiên bản rẽ nhánh ít nhiều của phc-win, nó sử dụng các kỹ thuật tương tự như phc-win nhưng hỗ trợ hầu hết tất cả các phiên bản PHP hiện đại. (5.3, 5.4, 5.5, 5.6, v.v.) Nó cũng có thể sử dụng Enigma VB để kết hợp php5ts.dll với exe của bạn, cũng như UPX nén nó. Cuối cùng, nó có win32std và winbinder được biên dịch tĩnh vào PHP.

BIÊN TẬP

Một lựa chọn khác là sử dụng

http://www.appcelerator.com/products/titanium-cross-pl platform-application-developer /

một trình biên dịch trực tuyến có thể xây dựng các tệp thực thi cho một số nền tảng khác nhau, từ một số ngôn ngữ khác nhau bao gồm cả PHP

Thủy triều

http://www.tidesdk.org/

TideSDK thực sự là dự án Titanium Desktop được đổi tên. Titanium vẫn tập trung vào thiết bị di động và từ bỏ phiên bản máy tính để bàn, được tiếp quản bởi một số người đã mở nguồn và đặt tên là TideSDK.

Nói chung, TideSDK sử dụng HTML, CSS và JS để kết xuất các ứng dụng, nhưng nó hỗ trợ các ngôn ngữ theo kịch bản như PHP, như một mô-đun trình cắm, cũng như các ngôn ngữ kịch bản lệnh khác như Python và Ruby.


Tôi có thể xác nhận rằng phc-win hoạt động để tạo tệp exe console với mã PHP 5.3. Chỉ cần có tập lệnh PHP trong cùng thư mục với exe php-win.
Dejv

Tôi đã sử dụng trình biên dịch bambalam. Nó khá thú vị và dễ dàng và cũng hỗ trợ trình tạo win, nhưng không hỗ trợ php5 :(
m3nda 23/214

PHP-Nightrain là một thay thế rất tốt cho PHPDesktop - và là nền tảng chéo (Windows, OSX, Linux). Mặc dù nó có tiếng xấu vì sự phụ thuộc vào Java, nhưng giờ đây nó đã chuyển sang Python như một trình bao bọc và là một lựa chọn rất tốt để phát triển phần mềm đa nền tảng dựa trên PHP. - github.com/naetech/nightrain
Taapo

1
Chỉ mất một ngày chủ nhật với một vấn đề Bambalam / beaviour. Trong cài đặt này, nó thực thi như 50 lần một ngày. Nó tạo các tệp tạm thời với kích thước tên cố định mà anh ta không bao giờ xóa (4 ký tự) ... kết quả là không còn tên tệp miễn phí. Sysiternals procmon đã giúp tìm ra điều gì đã xảy ra. Không dễ dàng và để lại một sự rung cảm xấu trên Bambalam.
João

1
người đàn ông công việc tuyệt vời! Tôi sẽ thử một vài trong số chúng. Cái nào là tốt nhất để sử dụng cơ sở dữ liệu mysql với trang php?
garatu

12

Tôi đã có vấn đề với hầu hết các công cụ trong các câu trả lời khác vì tất cả chúng đều rất lỗi thời.

Nếu bạn cần một giải pháp "chỉ hoạt động", hãy đóng gói phiên bản php đơn giản với dự án của bạn trong kho lưu trữ SFR WinRar, đặt nó để trích xuất mọi thứ vào một thư mục tạm thời và thực thi php your_script.php.

Để chạy tập lệnh cơ bản, các tệp duy nhất được yêu cầu là php.exephp5.dll(hoặc php5ts.dlltùy thuộc vào phiên bản).

Để thêm tiện ích mở rộng, hãy đóng gói chúng cùng với tệp php.ini:

[PHP]
extension_dir = "."
extension=php_curl.dll
extension=php_xxxx.dll
...

chào giải pháp của bạn là rất thú vị. Tương tự như máy chủ web quickphp. Bạn có ví dụ đơn giản cho điều đó? Tôi hy vọng bạn có thể cung cấp một nguồn. Nhân tiện, ý tưởng hay.
Edang Jeorlie

Điều này thực sự thú vị! Nhưng vấn đề là, OP không muốn "cho đi mã nguồn" và ngay cả một tân binh cũng có thể trích xuất tập lệnh từ SFX.
Jay Dadhania

8

Tôi đã thử hầu hết các giải pháp được đưa ra trong câu trả lời đầu tiên, giải pháp duy nhất phù hợp với tôi và phi thương mạiphp-desktop .

Tôi chỉ cần đặt các tập tin php của mình vào www/thư mục, thay đổi tên .exevà có thể chạy php của tôi như một exe !!

Ngoài ra có một tài liệu đầy đủ, hỗ trợ cập nhật, các tùy chọn và khả năng tương thích của windows và linux có thể dễ dàng thay đổi.


2
PHP Desktop hiện hỗ trợ Linux, hãy xem bản phát hành ban đầu của nó: github.com/cztomczak/phpdesktop/release/tag/linux-v72.0
Czarek Tomczak

6

RapidEXE chính xác cho công việc này:

Nó chuyển đổi một dự án php thành một exe độc ​​lập. Tôi đã có đủ tất cả các trình biên dịch khác, thử từng cái một và chúng đều làm tôi thất vọng bằng cách này hay cách khác. Hãy là khách của tôi, thông tin phản hồi luôn được chào đón!

Lưu ý bên lề: cơ chế đằng sau nó khá giống với phương pháp SFR WinRAR; trích xuất động cơ, trích xuất nguồn, sau đó chạy. Nó chỉ nhanh hơn và dễ dàng hơn để làm việc với. Biên dịch một lệnh, nén, giải nén thông minh, tự động dọn dẹp, cấu hình dễ dàng, kiểm soát hoàn toàn công cụ php & phiên bản; cũng mở rộng với nỗ lực tối thiểu.

Chúc mừng phát triển!


Tôi đã thử sử dụng công cụ của bạn nhưng tôi gặp lỗi sauCannot find myself (D:\Desktop\phpflexer\phpflexer.exe)
Ghola

Nó đầy hứa hẹn nhưng bạn có thể thêm một vài thư viện vào đây không? Ví dụ tôi cần GD2 để tập lệnh của tôi có thể hoạt động trên hình ảnh.
Tom

@Tom: chắc chắn, có một phiên bản mới và nếu bạn muốn thử nghiệm nó, tôi có thể cung cấp cho bạn một liên kết tải xuống. (Tôi hứa là không có phần mềm độc hại.) Bây giờ thực sự tốt hơn rất nhiều và đó là php 7.2, cộng với tôi nghĩ nó sẽ có khả năng xử lý các ngôn ngữ khác. Gmail của tôi là kellnerdenes.
dkellner

1
Chỉ cần thử, giải pháp khá gọn gàng cho các tập lệnh dòng lệnh được biên dịch! Tôi đã sử dụng exeutut4PHP cho hầu hết các dự án GUI của tôi trong một thời gian khá lâu, nhưng đối với các ứng dụng bảng điều khiển RapidEXE cũng trông rất tuyệt, nếu không muốn nói là tốt hơn.
Jay Dadhania

1
@JayDadhania Âm nhạc đến tai tôi! Phiên bản 3 sắp ra mắt, hãy theo dõi!
dkellner

2

ExeOutput cũng có thể biến trang web PHP thành phần mềm và ứng dụng Windows

Biến trang web PHP thành phần mềm và ứng dụng Windows

Các ứng dụng được tạo bằng exeutput cho PHP chạy các tập lệnh PHP, ứng dụng PHP và các trang web PHP nguyên bản và không yêu cầu máy chủ web, trình duyệt web hoặc phân phối PHP. Chúng hoạt động độc lập và hoạt động trên mọi máy tính có phiên bản Windows gần đây.

ExeOutput cho PHP là một trình biên dịch trang web mạnh mẽ, hoạt động với tất cả các yếu tố được tìm thấy trên các trang web hiện đại: tập lệnh PHP, JavaScript, HTML, CSS, XML, tệp PDF, Flash, video Flash, video Silverlight, cơ sở dữ liệu và hình ảnh. Kết hợp các yếu tố này với PHP Runtime và PHP Tiện ích mở rộng, exeutput cho PHP xây dựng một tệp EXE chứa ứng dụng hoàn chỉnh của bạn.

http://www.exeoutput.com/


1

Kinh nghiệm của tôi trong vấn đề này cho tôi biết, hầu hết các phần mềm này hoạt động tốt với các dự án nhỏ.
Nhưng những dự án lớn thì sao? ví dụ: Zend Framework 2 và một số thứ tương tự.
Một số trong số họ cần trình duyệt để chạy và điều này rất khó để nói với khách hàng "vui lòng nhậphttp://localhost/ " vào thanh địa chỉ trình duyệt của bạn !!

Tôi tạo một dự án đơn giản để làm điều này: PHPPy

Đây không phải là cách hoàn chỉnh để tạo tệp thực thi độc lập để chạy các dự án php nhưng giúp bạn làm điều này.
Tôi không thể biên dịch tệp python với tập tin PyInstaller hoặc Py2exe thành tập tin .exe, hy vọng bạn có thể.
Bạn không cần tập tin thực thi đồng phục.


4
Tạo một shorcut để localhost đó là một công việc khó khăn, phải không? :) Dù sao bạn cũng có lý do về "hoạt động tốt trên các dự án nhỏ". Đầy đủ "như bạn muốn" là phpdesktop.
m3nda

1

PHP Nightrain hiện tại (4.0.0) được viết bằng Python và nó sử dụng các thư viện wxPython. Cho đến nay wxPython đã hoạt động tốt để có được Nightrain PHP như ngày nay nhưng để đẩy PHP Nightrain lên cấp độ tiếp theo, chúng tôi đang giới thiệu một người anh em của PHP Nightrain, PHPWebkit!

Đây là bản cập nhật cho PHP Nightrain.

https://github.com/entrypass/nightrain-ep

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.