Bir PHP betiğini bağımsız bir Windows yürütülebilir dosyasına dönüştürme


128

Oldukça basit bir görevi otomatikleştirmek istiyorum. Bunun için PHP-CLI kullanarak komut satırından çalıştırdığım küçük bir PHP betiği yazdım. Şimdi bu komut dosyasını birine vermek istiyorum ama şunu yapmak istemiyorum:

  • kaynak kodunu ver
  • sisteme PHP'yi yüklemesini isteyin

PHP betiğinin .exe sürümünü oluşturmanın bir yolu var mı? Derlemenin kaldırılması konusunda gerçekten endişelenmiyorum; İnsanlardan PHP'yi yüklemelerini ve yapılandırmalarını istemekten daha çok endişeleniyorum.


2
bamcompile (r) hakkında bir şeyler duydunuz mu?
SagarPPanchal

1
Bambalam'ı birkaç yıldır kullanıyorum. Şu an neredeyse sonsuza dek durdu - ve daha fazlası, sadece PHP4.4.4 ile uyumlu. Bununla birlikte, UTF8 desteğine ve benzerine ihtiyaç duymadığınız ve bozuk foreach () ve diğerleri ile başa çıkabildiğiniz sürece, sizin için çalışmalıdır. PHP4.4.4 ile bir dizindeki UTF8 dosya adlarını ele almanın imkansız olduğunu unutmayın. Ayrıca% TEMP% içinde asla silinmeyen dosyalar oluşturduğunu da unutmayın (php [0-F] {2} .tmp), bunları temizlemeniz gerekecek.
Egon_Freeman

PHP'nin ikili dosyaları taşınabilir şekilde çalışabilir. İnsanlara bir klasörün tamamını çıkarmalarını ve "php.exe -c php.ini script.php" gibi bir şeyi yürüten bir toplu iş dosyası oluşturmalarını söyleyebilirsiniz.
FluorescentGreen5

Yanıtlar:


195

Şeftalili turta

http://www.peachpie.io

https://github.com/iolevel/peachpie

Peachpie, Microsoft tarafından Roslyn tabanlı ve popüler Phalanger'dan çizim yapan PHP 7 derleyicisidir. PHP kodunu saf MSIL'e derleyerek PHP'nin .NET / .NETCore içinde çalıştırılmasına izin verir.

Phalanger

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

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

https://github.com/devsense/phalanger

Phalanger, Prag'daki Charles Üniversitesi'nde başlatılan ve Microsoft tarafından desteklenen bir projedir. PHP betik dilinde yazılmış kaynak kodunu CIL (Common Intermediate Language) bayt koduna derler. .NET Framework'ün JIT derleyici bileşeni tarafından tamamlanan bir derleme işleminin başlangıcını yönetir. Yerel kod üretimini veya optimizasyonu ele almaz. Amacı, PHP betiklerini .NET derlemeleri, CIL kodu ve meta-verileri içeren mantıksal birimler halinde derlemektir.

Bambalam

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

Bambalam PHP EXE Derleyici / Embedder, PHP uygulamalarını bağımsız Windows .exe uygulamalarına dönüştürmek için ücretsiz bir komut satırı aracıdır. Üretilen exe dosyaları tamamen bağımsızdır, php dll'lere ihtiyaç duymazlar vs. php kodu Turck MMCache Encode kitaplığı kullanılarak kodlanır, bu nedenle uygulamanızı kaynak kodunuzu korurken dağıtmak istiyorsanız mükemmel bir çözümdür. Dönüştürücü ayrıca pencereli PHP uygulamaları için .exe dosyaları üretmek için de uygundur (örneğin WinBinder kitaplığı kullanılarak oluşturulmuştur). Bağımsız PHP Socket sunucuları / istemcileri yapmak için de iyidir (php_sockets.dll uzantısını kullanarak). PHP kaynaklarından yerel makine kodu üretmemesi anlamında gerçekten bir derleyici DEĞİL, ama çalışıyor!

ZZEE PHPExe

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

ZZEE PHPExe, PHP, HTML, Javascript, Flash ve diğer web dosyalarını Windows GUI exes olarak derler. Tanıdık PHP web paradigmasını kullanarak Windows GUI uygulamalarını hızla geliştirebilirsiniz. Aynı kodu çevrimiçi ve Windows uygulamaları için çok az değişiklik yaparak veya hiç değiştirmeden kullanabilirsiniz. Ticari bir üründür.

phc-kazan

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

PHP uzantısı bcompiler, PHP betik kodunu PHP bayt kodu olarak derlemek için kullanılır. Bu bayt kodu, bcompiler uzantısı yüklü olduğu sürece herhangi bir php dosyası gibi dahil edilebilir. Tüm bayt kodu dosyaları oluşturulduktan sonra, tüm proje dosyalarını program exe'ye paketlemek için değiştirilmiş bir Embeder kullanılır.

gerektirir

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

ExeOutput

http://www.exeoutput.com/

Ticari

WinBinder

http://winbinder.org/

WinBinder, kod programlama dili olan PHP'nin açık kaynaklı bir uzantısıdır. PHP programcılarının, minimum çabayla hızlı ve tatmin edici sonuçlar üreterek yerel Windows uygulamalarını kolayca oluşturmasına olanak tanır. Birkaç düzine satır içeren kısa betikler bile PHP'nin gücü ve esnekliği sayesinde yararlı bir program oluşturabilir.

PHPDesktop

https://github.com/cztomczak/phpdesktop

PHP Desktop, 2012 yılında Czarek Tomczak tarafından PHP, HTML5, JavaScript ve SQLite gibi web teknolojilerini kullanarak yerel masaüstü uygulamaları geliştirmek için bir yol sağlamak amacıyla kurulan açık kaynaklı bir projedir. Bu proje bir PHP'den EXE'ye derleyiciden daha fazlasıdır, bir web tarayıcısı (Internet Explorer veya Chrome gömülü), bir Mongoose web sunucusu ve bir PHP yorumlayıcısı içerir. Alışkın olduğunuz geliştirme iş akışı aynı kalır, mevcut bir web sitesini bir masaüstü uygulamasına dönüştürme adımı, temelde onu "www /" dizinine kopyalama meselesidir. SQLite veritabanını kullanmak isteğe bağlıdır, mysql / postgresql veritabanını uygulamanın yükleyicisine yerleştirebilirsiniz.

PHP Gece Yağmuru

https://github.com/kjellberg/nightrain

PHP Nightrain'i kullanarak HTML, CSS, JavaScript ve PHP web uygulamalarını Windows, Mac ve Linux işletim sistemlerinde yerel bir masaüstü uygulaması olarak dağıtabilecek ve çalıştırabileceksiniz. Popüler PHP Framework'leri (örn. CakePHP, Laravel, Drupal, vb.) İyi desteklenmektedir!

phc-win "çatal"

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

Phc-win'in az çok çatallı bir sürümü, phc-win ile aynı teknikleri kullanır, ancak neredeyse tüm modern PHP sürümlerini destekler. (5.3, 5.4, 5.5, 5.6, vb.) Ayrıca php5ts.dll dosyasını exe'nizle birleştirmek için Enigma VB'yi kullanabilir ve UPX sıkıştırır. Son olarak, win32std ve winbinder statik olarak PHP'ye derlenmiştir.

DÜZENLE

Başka bir seçenek de kullanmaktır

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

PHP dahil bir dizi farklı dilden bir dizi farklı platform için çalıştırılabilir dosyalar oluşturabilen çevrimiçi bir derleyici

TideSDK

http://www.tidesdk.org/

TideSDK aslında yeniden adlandırılan Titanium Desktop projesidir. Titanium mobil cihazlara odaklanmaya devam etti ve onu açık kaynaklı olan ve TideSDK olarak adlandıran bazı kişiler tarafından devralınan masaüstü versiyonunu terk etti.

Genel olarak TideSDK, uygulamaları oluşturmak için HTML, CSS ve JS kullanır, ancak bir eklenti modülü olarak PHP gibi komut dosyası içeren dilleri ve Python ve Ruby gibi diğer komut dosyası dillerini destekler.


Phc-win'in PHP 5.3 kodu ile konsol exe dosyası oluşturmak için çalıştığını doğrulayabilirim . PHP betiğini php-win exe ile aynı klasörde bulundurun.
Dejv

Bambalam derleyicisini kullandım. Oldukça havalı ve kolaydır ve aynı zamanda kazan-oluşturucuyu destekler, ancak php5 :(
m3nda

PHP-Nightrain, PHPDesktop'a çok iyi bir alternatiftir ve çapraz platformdur (Windows, OSX, Linux). Java bağımlılığından dolayı kötü bir üne sahip olsa da, şimdi bir sarmalayıcı olarak Python'a geçti ve PHP tabanlı çapraz platform yazılımı geliştirmek için çok iyi bir seçim. - github.com/naetech/nightrain
Taapo

1
Bambalam problemi / güzelliği ile tüm pazar gününü kaybettim. Bu kurulumda günde 50 kez gibi çalışır. Asla silmediği sabit ad boyutunda geçici dosyalar oluşturur (4 karakter) ... artık ücretsiz dosya adı vermez. Sysinternals procmon ne olduğunu anlamaya yardımcı oldu. Kolay olmadı ve Bambalam'da kötü bir his bıraktı.
João

1
harika iş adamları! Bazılarını deneyeceğim. MySQL veritabanını php sitesi ile kullanmak için en iyisi hangisidir?
garatu

12

Diğer yanıtlardaki araçların çoğunda sorun yaşadım çünkü hepsi çok eski.

"Sadece çalışacak" bir çözüme ihtiyacınız varsa, projenizle birlikte bir WinRar SFX arşivinde php'nin çıplak kemik sürümünü paketleyin, her şeyi geçici bir dizine ayıklayacak ve çalıştıracak şekilde ayarlayın php your_script.php.

Temel bir komut dosyasını çalıştırmak için gerekli olan tek dosyalar php.exeve php5.dll(veya php5ts.dllsürüme bağlı olarak).

Uzantı eklemek için onları bir php.ini dosyasıyla paketleyin:

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

merhaba çözümünüz çok ilginç. Quickphp web sunucusuna benzer. Bunun için basit bir örneğiniz var mı? Bir kaynak sağlayabileceğinizi umuyorum. Bu arada güzel fikir.
Edang Jeorlie

Bu gerçekten ilginç! Ama olay şu ki, OP "kaynak kodunu vermek" istemiyor ve bir çaylak bile senaryoyu SFX'ten çıkarabilir.
Jay Dadhania

8

1. cevapta verilen çözümlerin çoğunu denedim, benim için çalışan ve ticari olmayan tek çözüm php-masaüstü .

Sadece php dosyalarımı www/klasöre koydum , ismini değiştirdim ve .exephp'mi exe olarak çalıştırabildim !!

Ayrıca eksiksiz bir dokümantasyon, güncel destek, pencereler ve linux uyumluluğu vardır ve seçenekler kolayca değiştirilebilir.


2
PHP Desktop artık Linux'u destekliyor, ilk sürümüne bakın: github.com/cztomczak/phpdesktop/releases/tag/linux-v72.0
Czarek Tomczak

6

RapidEXE tam olarak bu iş için:

Bir php projesini bağımsız bir exe'ye dönüştürür. Diğer tüm derleyicilerden yeterince aldım, onları tek tek denedim ve hepsi beni bir şekilde hayal kırıklığına uğrattı. Misafirim olun, geri bildirimler her zaman beklerim!

Yan not: arkasındaki mekanizma WinRAR SFX yaklaşımına oldukça benzer; motoru çıkarın, kaynağı çıkarın, ardından çalıştırın. Çalışması daha hızlı ve daha kolay. Tek komutlu derleme, sıkıştırılmış, akıllı paket açma, otomatik temizleme, kolay yapılandırma, php motoru ve sürümünün tam kontrolü; ayrıca minimum çabayla genişletilebilir.

Mutlu gelişme!


Aracınızı kullanmayı denedim ama şu hatayı alıyorumCannot find myself (D:\Desktop\phpflexer\phpflexer.exe)
Ghola

Umut verici ama buna birkaç kitaplık ekleyebilir misiniz? Örneğin, komut dosyalarımın resimler üzerinde çalışabilmesi için GD2'ye ihtiyacım var.
Tom

@Tom: Elbette, yeni bir sürüm var ve test etmek isterseniz size bir indirme bağlantısı verebilirim. (Kötü amaçlı yazılım yok, söz veriyorum.) Aslında şu anda çok daha iyi ve php 7.2, ayrıca diğer dilleri idare edebileceğini düşünüyorum. Gmail'im kellnerdenes.
dkellner

1
Derlenmiş komut satırı betikleri için bunu deneyin, oldukça temiz bir çözüm sundu! Bir süredir GUI projelerimin çoğu için ExeOutput4PHP kullanıyorum, ancak konsol uygulamaları için RapidEXE de daha iyi değilse harika görünüyor.
Jay Dadhania

1
@JayDadhania Müzik kulaklarıma! Sürüm 3 yakında geliyor, bizi izlemeye devam edin!
dkellner

2

ExeOutput ayrıca PHP Web Sitelerini Windows Uygulamalarına ve Yazılımlarına Dönüştürebilir

PHP Web Sitelerini Windows Uygulamalarına ve Yazılımlarına Dönüştürün

PHP için ExeOutput ile yapılan uygulamalar, PHP komut dosyalarını, PHP uygulamalarını ve PHP web sitelerini yerel olarak çalıştırır ve bir web sunucusu, web tarayıcısı veya PHP dağıtımı gerektirmez. Bağımsızdırlar ve son Windows sürümlerine sahip herhangi bir bilgisayarda çalışırlar.

ExeOutput for PHP, modern sitelerde bulunan tüm öğelerle çalışan güçlü bir web sitesi derleyicisidir: PHP komut dosyaları, JavaScript, HTML, CSS, XML, PDF dosyaları, Flash, Flash videolar, Silverlight videoları, veritabanları ve resimler. Bu öğeleri PHP Runtime ve PHP Extensions ile birleştiren ExeOutput for PHP, eksiksiz uygulamanızı içeren bir EXE dosyası oluşturur.

http://www.exeoutput.com/


1

Bu konudaki tecrübelerime göre bu yazılımların çoğu küçük projelerde iyi çalışıyor.
Peki ya büyük projeler? örneğin: Zend Framework 2 ve bunun gibi bazı şeyler.
Bazılarının çalışması için tarayıcıya ihtiyacı vardır ve bunu müşteriye http://localhost/tarayıcınızın adres çubuğuna "lütfen yazın " demek zordur !!

Bunu yapmak için basit bir proje oluşturuyorum: PHPPy

Bu php projelerini çalıştırmak için bağımsız yürütülebilir dosya oluşturmanın tam bir yolu değildir, ancak bunu yapmanıza yardımcı olur.
Python dosyasını PyInstaller veya Py2exe ile .exe dosyasına derleyemedim, umarım yapabilirsin.
Tek tip sunucu çalıştırılabilir dosyalara ihtiyacınız yoktur.


4
Localhost için bir kısayol oluşturun, zor bir iş, değil mi? :) Her neyse, "küçük projelerde iyi çalışıyor" için nedeniniz var. "İstediğiniz kadar" benzersiz, phpdesktop'dur.
m3nda

1

Mevcut PHP Nightrain (4.0.0) Python'da yazılmıştır ve wxPython kitaplıklarını kullanır. Şimdiye kadar wxPython, PHP Nightrain'i bugün olduğu yere getirmek için iyi çalışıyor, ancak PHP Nightrain'i bir sonraki seviyeye taşımak için, PHP Nightrain'in bir kardeşi olan PHPWebkit'i tanıtıyoruz!

PHP Nightrain için bir güncelleme.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.