Windows'ta php.exe, php-win.exe ve cmd.exe arasındaki ilişki nedir?

Sep 05 2020

Windows'ta PHP CLI çalıştırdığım tüm yıllar boyunca, komut .batdosyalarıma aşağıdaki gibi dosyalarla başladım :

php test.php

phpC:\PHP\php.exenedeniyle çözülür PATH.

Bununla sorun yok. Her zaman o sinir bozucu cmd.exesimgeyi / Görev Çubuğu grubunu almaları dışında .

Bu yüzden, sadece birkaç dakika önce, bunun yerine masaüstümde doğrudan için bir kısayol oluşturdum C:\PHP\php.exeve betiğimin tam yolunu argüman olarak girdim . Şimdi, masaüstümdeki bu "PHP" simgesine çift tıkladığımda, açılmıyor cmd.exe, doğrudan PHP.exe'yi açıyor , böylece cmd.exe simgesi yerine bir PHP simgesi alıyor ve kendisini kendi Görev Çubuğu grubuna yerleştiriyor.

Bununla birlikte, simgenin yanı sıra, her şekilde cmd.exe ile aynı görünür. Ben çok emin o değilim olduğunu sadece PHP simgesiyle, cmd.exe. Yoksa bu, cmd.exe'den tamamen ayrılmış bir tür özel terminal mi?

İçinde php-win.exeçalıştırılabilir bir dosya da var C:\PHP. Bunun ne olduğunu ya php.exeda aynı doğrultuda nasıl farklı olduğunu asla anlayamadım . Yukarıdaki ile aynı şeyi yaparsam, günlüğe kaydedilen PHP hatasıyla anında çöküyor:

cli_get_process_title(): cli_get_process_title had an error: Windows error code: 6

"BENİOKU" dosyasında bu yürütülebilir dosya hakkında herhangi bir şey belirtilmemiştir.

PowerShell'i birçok kez denedim ve kullanmaya çalıştım, ancak her zaman garip hatalar ve onunla ilgili sorunlar var, bu yüzden cmd.exe'ye takılı kaldım. Ayrıca, her zaman bir ton kısayol yapmak ve argümanlarını PHP betiklerime giden tam yolları temsil edecek şekilde düzenlemek zorunda kalmak, sinir bozucu cmd ile de olsa PHP betiklerimi çok daha iyi bir şekilde çalıştıran .bat dosyalarına sahip olmaktan çok daha kötüdür. PHP biri yerine exe simgesi.

Yıllardır duyduğum gibi görünen bu "Windows Terminali" şeyi, ama hala makinemde bulunacak bir yer yok.

İdeal olarak, ne cmd.exe'den ne de php.exe'den alınmış kendi özel simgeme sahip olmak isterdim, ancak geçmişte bunu yapmanın tek yolu cmd.exe'yi kopyalamak, değiştirmek ve o zaman bunu her yerde kullanın. Yani değil zarif veya mantıklı çözüm.

Lütfen php-win.exe'nin ne işe yaradığını, php.exe'nin aslında farklı bir simgeye sahip cmd.exe olup olmadığını ve basit bir şey varsa PHP CLI sistemim için kendi simgemi / markamı elde etmek için yapabileceğim basit bir şey varsa açıklayın.

Yanıtlar

1 user1686 Sep 05 2020 at 17:37

Bununla sorun yok. Her zaman o sinir bozucu cmd.exe simgesini / Görev Çubuğu grubunu almaları dışında.

Bat betikleri her zaman cmd.exe üzerinden çalıştırıldığı için (örneğin - böylece cmd.exe'nin aldığı konsol penceresini alırlar.

Bununla birlikte, simgenin yanı sıra, her şekilde cmd.exe ile aynı görünür. Sadece PHP simgesiyle birlikte cmd.exe olduğundan oldukça eminim. Yoksa bu, cmd.exe'den tamamen ayrılmış bir tür özel terminal mi?

Terminal her zaman cmd.exe'den ayrı olmuştur. Şimdi Conhost olarak da bilinen standart Windows Konsolu penceresine bakıyorsunuz . (Win2000 / XP döneminde CSRSS'nin bir parçasıydı.)

Hem cmd.exe hem de php.exe'nin kendilerine ait grafik kullanıcı arabirimleri yoktur - başlatıldığında Conhost'u sihirli bir şekilde çağırırlar.

Ayrıca C: \ PHP'de bir php-win.exe yürütülebilir dosyası vardır. Bunun ne olduğunu veya aynı dizindeki php.exe'den nasıl farklı olduğunu asla anlayamadım.

Belirtildiği gibi, başladığı php.exe Conhost Terminal penceresini çağırır - ama bu php.exe şey değildir gelmez , Windows php.exe dosyası "konsol uygulaması" olarak işaretlenmiş kabul etmesi değil, aslında otomatik olarak gerçekleşir. İster cmd.exe'den (.bat betiği çalıştırırken) miras alınmış olsun, isterse yeni bir tane (php.exe'ye çift tıklandığında) olsun , her zaman bir konsolda başlatılacaktır.

Yani php-win.exe neredeyse tamamen aynı şeydir, ama .exe dosyası olduğunu değil "konsola" olarak işaretlenmiş - yerine "GUI uygulaması" olarak işaretlenmiş ve bir senaryo olduğunu çalıştırmak için kullanabilirsiniz sürece (tamamen görünmez çalışacaktır örneğin, GUI pencereleri oluşturmak için PHP-GTK veya PHP / Tk'yi çağırır).

Aynı nedenden ötürü, Python, Windows'ta python.exe ve pythonw.exe ile birlikte gelir - biri öncelikle CLI tabanlı araçlar oluşturmak için, diğeri grafik uygulamaları oluşturmak içindir.

Yıllardır duyduğum gibi görünen bu "Windows Terminali" şeyi, ama hala makinemde bulunacak bir yer yok.

Windows 10'unuz varsa Microsoft Store aracılığıyla yüklenebilir.

(Yüklerseniz, Conhost'un tamamen yerini almayacağını unutmayın - yalnızca Terminal uygulamasını kendiniz açtığınızda kullanılacaktır. Bir konsol .exe'ye çift tıkladığınızda yine de Conhost'ta görüntülenecektir.)

İdeal olarak, ne cmd.exe'den ne de php.exe'den alınmış kendi özel simgeme sahip olmak isterdim, ancak geçmişte bunu yapmanın tek yolu cmd.exe'yi kopyalamak, değiştirmek ve o zaman bunu her yerde kullanın. Bu zarif veya mantıklı bir çözüm değil.

Php.exe'yi kopyalayın ve onu değiştirin. Veya talep üzerine bir konsol penceresi oluşturmanıza izin veren bazı PECL modülleriyle (belki w32api) birlikte php-win.exe'yi kullanın.