Przekonwertuj skrypt PHP na samodzielny plik wykonywalny systemu Windows


132

Chcę zautomatyzować dość proste zadanie. W tym celu napisałem mały skrypt PHP, który uruchamiam z wiersza poleceń za pomocą PHP-CLI. Teraz chcę przekazać komuś ten skrypt, ale nie chcę:

  • rozdać kod źródłowy
  • poproś go o zainstalowanie PHP w systemie

Czy istnieje sposób na utworzenie wersji .exe skryptu PHP. Naprawdę nie martwię się zbytnio dekompilacją; Bardziej martwię się pytaniem ludzi o zainstalowanie i skonfigurowanie PHP.


2
czy słyszałeś o bamcompile (r)?
SagarPPanchal

1
Używam Bambalam od wielu lat. Został zablokowany na zawsze - i co więcej, jest kompatybilny tylko z PHP4.4.4. Jednakże, o ile nie potrzebujesz obsługi UTF8 i podobnych, i możesz sobie poradzić z uszkodzonymi foreach () i kilkoma innymi, powinno to działać dla Ciebie. Zauważ, że w PHP4.4.4 nie da się poradzić sobie z, powiedzmy, nazwami plików UTF8 w katalogu. Pamiętaj również, że tworzy pliki w% TEMP%, które nigdy nie są usuwane (php [0-F] {2} .tmp), będziesz musiał je wyczyścić.
Egon_Freeman

Pliki binarne PHP mogą działać przenośnie. Możesz po prostu powiedzieć ludziom, aby wyodrębnili cały folder i utworzyli plik wsadowy, który wykonuje coś takiego jak „php.exe -c php.ini script.php”.
FluorescentGreen5

Odpowiedzi:


195

Ciasto brzoskwiniowe

http://www.peachpie.io

https://github.com/iolevel/peachpie

Peachpie to kompilator PHP 7 oparty na Roslyn firmy Microsoft i czerpiący z popularnego Phalanger. Umożliwia wykonywanie PHP w ramach .NET / .NETCore poprzez kompilację kodu PHP do czystego MSIL.

Phalanger

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

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

https://github.com/devsense/phalanger

Phalanger to projekt, który rozpoczął się na Uniwersytecie Karola w Pradze i był wspierany przez Microsoft. Kompiluje kod źródłowy napisany w języku skryptowym PHP do kodu bajtowego CIL (Common Intermediate Language). Obsługuje początek procesu kompilacji, który jest zakończony przez komponent kompilatora JIT platformy .NET Framework. Nie dotyczy generowania kodu natywnego ani optymalizacji. Jego celem jest kompilacja skryptów PHP do zestawów .NET, jednostek logicznych zawierających kod CIL i metadane.

Bambalam

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

Bambalam PHP EXE Compiler / Embedder to darmowe narzędzie wiersza poleceń do konwersji aplikacji PHP na samodzielne aplikacje Windows .exe. Utworzone pliki exe są całkowicie samodzielne, nie są potrzebne biblioteki dll php itp. Kod php jest kodowany przy użyciu biblioteki Turck MMCache Encode, więc jest to idealne rozwiązanie, jeśli chcesz rozpowszechniać swoją aplikację, jednocześnie chroniąc kod źródłowy. Konwerter nadaje się również do tworzenia plików .exe dla okienkowych aplikacji PHP (utworzonych np. Przy użyciu biblioteki WinBinder). Jest również dobry do tworzenia samodzielnych serwerów / klientów PHP Socket (przy użyciu rozszerzenia php_sockets.dll). NIE jest to kompilator w tym sensie, że nie tworzy natywnego kodu maszynowego ze źródeł PHP, ale działa!

ZZEE PHPExe

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

ZZEE PHPExe kompiluje PHP, HTML, Javascript, Flash i inne pliki internetowe do exes GUI systemu Windows. Możesz szybko tworzyć aplikacje Windows GUI, stosując znany paradygmat sieciowy PHP. Możesz użyć tego samego kodu dla aplikacji online i Windows z niewielkimi modyfikacjami lub bez nich. Jest to produkt komercyjny.

phc-win

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

Rozszerzenie PHP bcompiler służy do kompilowania kodu skryptu PHP do kodu bajtowego PHP. Ten kod bajtowy można dołączyć tak samo jak każdy plik php, o ile załadowane jest rozszerzenie bcompiler. Po utworzeniu wszystkich plików kodu bajtowego zmodyfikowany Embeder jest używany do spakowania wszystkich plików projektu do programu exe.

Wymaga

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

ExeOutput

http://www.exeoutput.com/

Reklama w telewizji

WinBinder

http://winbinder.org/

WinBinder jest rozszerzeniem typu open source do PHP, języka programowania skryptowego. Pozwala programistom PHP łatwo tworzyć natywne aplikacje Windows, zapewniając szybkie i satysfakcjonujące wyniki przy minimalnym wysiłku. Nawet krótkie skrypty zawierające kilkadziesiąt wierszy mogą wygenerować przydatny program, dzięki mocy i elastyczności PHP.

PHPDesktop

https://github.com/cztomczak/phpdesktop

PHP Desktop to projekt open source założony przez Czarka Tomczaka w 2012 roku w celu zapewnienia możliwości tworzenia natywnych aplikacji desktopowych z wykorzystaniem technologii internetowych, takich jak PHP, HTML5, JavaScript i SQLite. Ten projekt to coś więcej niż tylko kompilator PHP do EXE, zawiera on przeglądarkę internetową (osadzoną w przeglądarce Internet Explorer lub Chrome), serwer sieciowy Mongoose i interpreter PHP. Proces tworzenia oprogramowania, do którego jesteś przyzwyczajony, pozostaje ten sam, krok przekształcania istniejącej witryny internetowej w aplikację komputerową polega w zasadzie na skopiowaniu jej do katalogu „www /”. Korzystanie z bazy danych SQLite jest opcjonalne, możesz osadzić bazę danych mysql / postgresql w instalatorze aplikacji.

PHP Nightrain

https://github.com/kjellberg/nightrain

Korzystając z PHP Nightrain będziesz mógł wdrażać i uruchamiać aplikacje internetowe HTML, CSS, JavaScript i PHP jako natywną aplikację komputerową w systemach operacyjnych Windows, Mac i Linux. Popularne frameworki PHP (np. CakePHP, Laravel, Drupal, itp…) są dobrze obsługiwane!

phc-win "fork"

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

Mniej lub bardziej rozwidlona wersja phc-win, wykorzystuje te same techniki, co phc-win, ale obsługuje prawie wszystkie współczesne wersje PHP. (5.3, 5.4, 5.5, 5.6 itd.) Może również używać Enigma VB do łączenia php5ts.dll z twoim exe, a także kompresować go UPX. Wreszcie, ma pliki win32std i winbinder skompilowane statycznie do PHP.

EDYTOWAĆ

Inną opcją jest użycie

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

kompilator online, który może tworzyć pliki wykonywalne dla wielu różnych platform, z wielu różnych języków, w tym PHP

TideSDK

http://www.tidesdk.org/

TideSDK to tak naprawdę przemianowany projekt Titanium Desktop. Titanium nadal skupiał się na urządzeniach mobilnych i porzucił wersję na komputery stacjonarne, która została przejęta przez niektórych ludzi, którzy otworzyli go i nazwali TideSDK.

Ogólnie rzecz biorąc, TideSDK wykorzystuje HTML, CSS i JS do renderowania aplikacji, ale obsługuje języki skryptowe, takie jak PHP, jako moduł wtyczki, a także inne języki skryptowe, takie jak Python i Ruby.


Mogę potwierdzić, że phc-win działa przy tworzeniu pliku exe konsoli z kodem PHP 5.3. Po prostu umieść skrypt PHP w tym samym folderze co php-win exe.
Dejv

Użyłem kompilatora Bambalam. Jest całkiem fajny i łatwy, a także obsługuje win-builder, ale nie obsługuje php5 :(
m3nda

PHP-Nightrain jest bardzo dobrą alternatywą dla PHPDesktop - i jest wieloplatformowy (Windows, OSX, Linux). Chociaż miał złą reputację ze względu na zależność od języka Java, teraz przeszedł na Python jako opakowanie i jest bardzo dobrym wyborem do tworzenia oprogramowania wieloplatformowego opartego na PHP. - github.com/naetech/nightrain
Taapo

1
Właśnie straciłem całą niedzielę z problemem / zachowaniem Bambalam. W tej instalacji wykonuje się 50 razy dziennie. Tworzy pliki tymczasowe ze stałą wielkością nazwy, której nigdy nie usuwa (4 znaki) ... w rezultacie nie ma już wolnych nazw plików. Sysinternals procmon pomógł zrozumieć, co się stało. Nie było to łatwe i pozostawia złą atmosferę na Bambalam.
João

1
świetna robota! Spróbuję niektórych z nich. Która baza danych mysql jest najlepsza w przypadku witryny PHP?
garatu,

12

Miałem problemy z większością narzędzi w innych odpowiedziach, ponieważ wszystkie są bardzo przestarzałe.

Jeśli potrzebujesz rozwiązania, które „po prostu zadziała”, spakuj podstawową wersję php do swojego projektu w archiwum WinRar SFX, ustaw je tak, aby wypakować wszystko do katalogu tymczasowego i wykonać php your_script.php.

Aby uruchomić podstawowy skrypt, jedyne wymagane pliki to php.exei php5.dll(lub w php5ts.dllzależności od wersji).

Aby dodać rozszerzenia, spakuj je razem z plikiem php.ini:

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

cześć, twoje rozwiązanie jest bardzo interesujące. Jest podobny do serwera WWW quickphp. Czy masz na to prosty przykład? Mam nadzieję, że możesz podać źródło. Nawiasem mówiąc, niezły pomysł.
Edang Jeorlie

To jest naprawdę interesujące! Ale rzecz w tym, że OP nie chce "zdradzać kodu źródłowego" i nawet nowicjusz mógłby po prostu wyodrębnić skrypt z SFX.
Jay Dadhania

8

Wypróbowałem większość rozwiązań podanych w pierwszej odpowiedzi, jedyne, które działało i jest niekomercyjne, to php-desktop .

Po prostu umieściłem moje pliki php w www/folderze, zmieniłem nazwę .exei mogłem uruchomić php jako exe !!

Dostępna jest również pełna dokumentacja, aktualne wsparcie, kompatybilność z Windows i Linux, a opcje można łatwo zmienić.


2
PHP Desktop obsługuje teraz Linuksa, zobacz jego pierwsze wydanie: github.com/cztomczak/phpdesktop/releases/tag/linux-v72.0
Czarek Tomczak

7

RapidEXE jest właśnie do tego zadania:

Konwertuje projekt php na samodzielny plik exe. Miałem dość wszystkich innych kompilatorów, wypróbowałem je jeden po drugim i wszystkie mnie zawiodły. Bądź moim gościem, informacje zwrotne są zawsze mile widziane!

Uwaga dodatkowa: mechanizm za tym jest podobny do podejścia WinRAR SFX; wypakuj silnik, wyodrębnij źródło, a następnie uruchom. Jest po prostu szybszy i łatwiejszy w obsłudze. Kompilacja jednym poleceniem, skompresowane, inteligentne rozpakowywanie, automatyczne czyszczenie, łatwa konfiguracja, pełna kontrola & wersji silnika php; również rozszerzalny przy minimalnym wysiłku.

Miłego rozwoju!


Próbowałem użyć twojego narzędzia, ale Cannot find myself (D:\Desktop\phpflexer\phpflexer.exe)
pojawia się

To obiecujące, ale czy mógłbyś dodać do tego kilka bibliotek? Na przykład potrzebuję GD2, aby moje skrypty mogły działać na obrazach.
Tom

@Tom: oczywiście, jest nowa wersja i jeśli masz ochotę ją przetestować, mogę podać link do pobrania. (Obiecuję, że nie ma złośliwego oprogramowania). Obecnie jest dużo lepiej i jest to php 7.2, a ponadto myślę, że będzie w stanie obsługiwać inne języki. Mój gmail to kellnerdenes.
dkellner

1
Właśnie wypróbowałem, całkiem zgrabne rozwiązanie dla skompilowanych skryptów wiersza poleceń! Używam ExeOutput4PHP do większości projektów GUI od dłuższego czasu, ale w aplikacjach konsolowych RapidEXE również wygląda świetnie, jeśli nie lepiej.
Jay Dadhania

1
@JayDadhania Muzyka dla moich uszu! Wersja 3 już wkrótce, bądźcie czujni!
dkellner

2

ExeOutput może również przekształcić strony internetowe PHP w aplikacje i oprogramowanie systemu Windows

Zamień strony internetowe PHP w aplikacje i oprogramowanie Windows

Aplikacje utworzone za pomocą ExeOutput for PHP obsługują skrypty PHP, aplikacje PHP i strony internetowe PHP natywnie i nie wymagają serwera WWW, przeglądarki internetowej ani dystrybucji PHP. Są autonomiczne i działają na każdym komputerze z najnowszymi wersjami systemu Windows.

ExeOutput for PHP to potężny kompilator witryn internetowych, który działa ze wszystkimi elementami występującymi w nowoczesnych witrynach: skryptami PHP, JavaScript, HTML, CSS, XML, plikami PDF, Flash, filmami Flash, filmami Silverlight, bazami danych i obrazami. Łącząc te elementy z PHP Runtime i PHP Extensions, ExeOutput for PHP tworzy plik EXE zawierający całą Twoją aplikację.

http://www.exeoutput.com/


1

Moje doświadczenie w tej kwestii mówi mi, że większość tych programów działa dobrze w małych projektach.
A co z dużymi projektami? np: Zend Framework 2 i kilka podobnych rzeczy.
Niektóre z nich wymagają do działania przeglądarki i trudno powiedzieć klientowi „proszę wpisać http://localhost/” w pasku adresu przeglądarki !!

W tym celu tworzę prosty projekt: PHPPy

Nie jest to kompletny sposób tworzenia samodzielnego pliku wykonywalnego do uruchamiania projektów php, ale pomaga to zrobić.
Nie mogłem skompilować pliku Pythona z PyInstaller lub Py2exe do pliku .exe, mam nadzieję, że możesz.
Nie potrzebujesz plików wykonywalnych uniformserver.


4
Utworzenie skrótu do hosta lokalnego to ciężka praca, prawda? :) Zresztą masz powód, że „działa dobrze na małych projektach”. Unikalnym pełnym „tak, jak chcesz” jest phpdesktop.
m3nda

1

Obecny PHP Nightrain (4.0.0) jest napisany w Pythonie i korzysta z bibliotek wxPython. Do tej pory wxPython działał dobrze, aby uzyskać PHP Nightrain tam, gdzie jest dzisiaj, ale aby przenieść PHP Nightrain na wyższy poziom, przedstawiamy rodzeństwo PHP Nightrain, PHPWebkit!

To aktualizacja PHP Nightrain.

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.