Konwersja skryptu PHP do samodzielnego pliku wykonywalnego windows

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

  • give away the source code
  • poproś go o zainstalowanie PHP w systemie

Czy jest sposób na stworzeniewersja exe skryptu PHP. Naprawdę nie martwię się o dekompilację; bardziej martwię się o to, aby ludzie instalowali i konfigurowali PHP.

Author: Salman A, 2012-01-28

8 answers

Peachpie

Http://www.peachpie.io

Https://github.com/iolevel/peachpie

Peachpie to kompilator PHP 7 oparty na Roslyn firmy Microsoft i czerpiący z popularnego Phalangera. Pozwala na wykonywanie PHP w. NET/. NETCore poprzez kompilację kodu PHP do pure MSIL.

Phalanger

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

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

Https://github.com/devsense/phalanger

Phalanger to projekt, który powstał 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 uzupełniony przez komponent kompilatora JIT. NET Framework. Nie zajmuje się generowaniem kodu natywnego ani optymalizacją. Jego celem jest kompilowanie skryptów PHP do zestawów. NET, jednostek logicznych zawierających kod CIL i metadane.

Bambalam

Http://www.bambalam.se/bamcompile/

Bambalam PHP Exe Compiler / Embedder jest darmowym narzędziem wiersza poleceń do konwersji aplikacji PHP do samodzielnego systemu Windows .aplikacje exe. Produkowane pliki exe są całkowicie samodzielny, nie ma potrzeby korzystania z bibliotek DLL php itp. Kod php jest kodowany za pomocą biblioteki kodowania Turck MMCache, więc jest to idealne rozwiązanie, jeśli chcesz rozpowszechniać swoją aplikację, jednocześnie chroniąc swój kod źródłowy. Konwerter nadaje się również do produkcji .pliki exe dla windowed aplikacji PHP (utworzone przy użyciu na przykład biblioteki Winbindera). Jest to również dobre do tworzenia samodzielnych serwerów/klientów z gniazdami PHP (przy użyciu php_sockets.rozszerzenie dll). Nie jest to tak naprawdę 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 rozwijać aplikacje GUI systemu Windows, stosując znany paradygmat PHP web. Możesz użyć tego samego kodu w aplikacjach online i Windows z niewielką lub bez modyfikacji. To jest reklama produkt.

Phc-win

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

Rozszerzenie PHP bcompiler służy do kompilacji kodu skryptu PHP do kodu bajtowego PHP. Ten bajt może być dołączony Tak jak każdy plik php, o ile rozszerzenie bcompiler jest załadowane. 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/

Komercyjne

WinBinder

Http://winbinder.org/

WinBinder jest rozszerzeniem open source do PHP, języka programowania skryptowego. Pozwala programistom PHP łatwo tworzyć natywne aplikacje Windows, uzyskując szybkie i satysfakcjonujące wyniki przy minimalnym wysiłku. Parzyste krótkie skrypty z kilkudziesięciu linii może 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, aby zapewnić sposób na tworzenie natywnych aplikacji desktopowych przy użyciu technologii internetowych, takich jak PHP, HTML5, JavaScript i SQLite. Ten projekt jest czymś więcej niż tylko kompilatorem PHP do EXE, osadza przeglądarkę internetową (Internet Explorer lub Chrome embedded), Mongoose web-server i interpreter PHP. Proces rozwoju, do którego jesteś przyzwyczajony, pozostaje taki sam, krok przekształcenia istniejącej strony internetowej w aplikację desktopową jest w zasadzie kwestią skopiowania jej do katalogu " www/". Korzystanie z bazy danych SQLite jest opcjonalne, można osadzić bazę danych mysql / postgresql w instalatorze aplikacji.

PHP Nightrain

Http://www.naetech.com/php-nightrain

Using PHP Nightrain będziesz mógł wdrażać i uruchamiać aplikacje internetowe HTML, CSS, JavaScript i PHP jako natywną aplikację desktopową w systemach 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

Bardziej lub mniej rozwidlona wersja phc-win, używa tych samych technik co phc-win, ale obsługuje prawie wszystkie współczesne wersje PHP. (5.3, 5.4, 5.5, 5.6, etc) może również użyć Enigma VB do połączenia php5ts.dll z exe, jak UPX skompresować go. Wreszcie, win32std i winbinder skompilowane statycznie do PHP.

EDIT

Inną opcją jest użycie

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

Kompilator online, który może budować 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ę projekt Titanium Desktop. Titanium pozostał skupiony na urządzeniach mobilnych i porzucił wersję desktopową, która została przejęta przez niektórych ludzi, którzy ją udostępnili i nazwali ją TideSDK.

Ogólnie TideSDK używa HTML, CSS i JS do renderowania aplikacji, ale obsługuje języki skryptowe, takie jak PHP, jako moduł wtyczek, a także inne języki skryptowe, takie jak Python i Ruby.

 168
Author: Mark Baker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-10 16:46:01

Próbowałem większości rozwiązań podanych w pierwszej odpowiedzi, jedynym, który działa i był niekomercyjny był php-desktop .

Po prostu umieściłem moje pliki php w folderze www, wpisując nazwę .exe i udało mi się uruchomić php jako exe !!

Istnieje również pełna dokumentacja, aktualne wsparcie i opcje można łatwo zmienić.

Niestety większość projektu 1st answer została przerwana i trudno znaleźć idealny sposób, aby to zrobić jest również cross Peron...

 5
Author: Sébastien Garcia-Roméo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-17 11:52:57

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 wersję PHP z Twoim projektem do archiwum WinRar SFX, ustaw go tak, aby rozpakował wszystko do katalogu tymczasowego i wykonaj php your_script.php.

Aby uruchomić podstawowy skrypt, wymagane są tylko pliki php.exe i php5.dll (lub php5ts.dll w zależności od wersji).

Aby dodać rozszerzenia, spakuj je wraz z php.plik ini:

[PHP]
extension_dir = "."
extension=php_curl.dll
extension=php_xxxx.dll
...
 4
Author: toster-cx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-13 00:29:28

Http://winbinder.org/

"WinBinder jest nowym rozszerzeniem open source dla PHP, języka programowania skryptowego. Pozwala programistom PHP na łatwe tworzenie natywnych aplikacji Windows."

 3
Author: djot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-28 16:13:58

ExeOutput jest również może włączyć strony PHP do aplikacji i oprogramowania Windows

Zamień strony PHP w aplikacje i oprogramowanie Windows

Aplikacje wykonane z ExeOutput dla PHP uruchamiają skrypty PHP, aplikacje PHP i strony internetowe PHP natywnie i nie wymagają serwera www, przeglądarki internetowej lub dystrybucji PHP. Są samodzielne i działają na każdym komputerze z najnowszymi wersjami systemu Windows.

ExeOutput dla PHP jest potężnym kompilatorem stron internetowych, który działa ze wszystkimi elementami znajdującymi się na nowoczesnych stronach: skrypty PHP, JavaScript, HTML, CSS, XML, pliki PDF, Flash, filmy Flash, filmy Silverlight, bazy danych i obrazy. Łącząc te elementy z PHP Runtime i rozszerzenia PHP, ExeOutput dla PHP buduje plik EXE, który zawiera kompletną aplikację.

Http://www.exeoutput.com/

 2
Author: srinath madusanka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-29 08:55:18

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

Tworzę prosty projekt, aby to zrobić : PHPPy

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

 1
Author: Mohamad Rostami,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-27 09:16:10

Obecny PHP Nightrain (4.0.0) jest napisany w Pythonie i wykorzystuje biblioteki wxPython. Do tej pory wxPython działał dobrze, aby uzyskać PHP Nightrain tam, gdzie jest dzisiaj, ale w celu push PHP Nightrain do jego kolejny poziom, przedstawiamy rodzeństwo PHP Nightrain, PHPWebkit!

Jest to aktualizacja do PHP Nightrain.

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

 1
Author: zeddex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-30 15:02:16

PHPFlexer zrobi sztuczkę, jeśli spakujesz swoje rzeczy w jednym pliku. Wiem, Wiem, to jest bardzo ograniczone i w ogóle, ale jeden krok w kierunku nirwany.

Pracuję nad lepszym, nazywa się RapidExe - działa bezproblemowo z PHP 7.2 i obsługuje praktycznie dowolną liczbę plików w dowolnej strukturze folderów. Wersje Beta będą dostępne wkrótce, ale nie chcę używać tego forum do reklamowania go czy coś. Poza tym jest całkowicie darmowy i zawsze będzie be.

UPDATE

RapidExe jest już dostępny:

Http://deneskellner.com/sw/rapidexe

 1
Author: dkellner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-15 08:24:36