Apa hubungan antara php.exe, php-win.exe dan cmd.exe di Windows?

Sep 05 2020

Selama bertahun-tahun saya menjalankan PHP CLI di Windows, saya telah memulai skrip saya dengan .batfile seperti ini:

php test.php

phpmemutuskan untuk C:\PHP\php.exekarena saya PATH.

Tidak ada masalah dengan ini. Kecuali mereka selalu mendapatkan cmd.exeikon / grup Taskbar sial itu .

Jadi, hanya beberapa menit yang lalu, saya malah membuat pintasan di desktop saya langsung ke C:\PHP\php.exe, dan memasukkan jalur lengkap ke skrip saya sebagai argumen untuk itu. Sekarang, ketika saya mengklik dua kali ikon "PHP" di desktop saya, itu tidak terbuka cmd.exe, tetapi PHP.exe secara langsung, sehingga ia mendapat ikon PHP, bukan ikon cmd.exe, dan menempatkan dirinya di grup Taskbar sendiri.

Namun, selain ikon, tampilannya sama persis dengan cmd.exe. Saya cukup yakin itu adalah cmd.exe, hanya dengan ikon PHP. Atau apakah ini semacam terminal khusus, sepenuhnya terpisah dari cmd.exe?

Ada juga yang php-win.exedapat dieksekusi dalam C:\PHP. Saya tidak pernah bisa mengetahui apa ini atau apa bedanya dari php.exedi direktori yang sama. Jika saya melakukan hal yang sama seperti di atas, itu langsung macet dengan kesalahan PHP yang dicatat:

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

Tidak ada penyebutan apapun dalam file "README" tentang eksekusi ini.

Saya telah berkali-kali bereksperimen dan mencoba menggunakan PowerShell, tetapi selalu ada gangguan dan masalah aneh dengannya, itulah sebabnya saya tetap menggunakan cmd.exe. Juga, harus membuat banyak pintasan sepanjang waktu dan mengedit argumen mereka untuk mewakili jalur lengkap ke skrip PHP saya jauh lebih buruk daripada memiliki file .bat yang menjalankan skrip PHP saya dengan cara yang jauh lebih baik, meskipun dengan cmd sial. exe alih-alih ikon PHP.

Hal "Windows Terminal" ini sepertinya saya dengar selama bertahun-tahun, tapi masih belum bisa ditemukan di mesin saya.

Idealnya, saya ingin memiliki ikon kustom saya sendiri, tidak diambil dari cmd.exe atau php.exe, tetapi satu-satunya cara yang saya temukan untuk melakukannya di masa lalu adalah dengan menyalin cmd.exe, memodifikasinya dan lalu gunakan itu di mana saja. Itu bukanlah solusi yang elegan atau masuk akal.

Tolong jelaskan kepada saya untuk apa php-win.exe itu, apakah php.exe sebenarnya hanya cmd.exe dengan ikon yang berbeda, dan jika ada sesuatu yang sederhana yang dapat saya lakukan untuk mendapatkan ikon / merek saya sendiri untuk sistem PHP CLI saya.

Jawaban

1 user1686 Sep 05 2020 at 17:37

Tidak ada masalah dengan ini. Kecuali mereka selalu mendapatkan ikon cmd.exe / grup Taskbar sial itu.

Mereka akan melakukannya, karena skrip .bat selalu dijalankan melalui cmd.exe (seperti - jadi mereka mendapatkan jendela konsol apa pun yang cmd.exe dapatkan.

Namun, selain ikon, tampilannya sama persis dengan cmd.exe. Saya cukup yakin itu adalah cmd.exe, hanya dengan ikon PHP. Atau apakah ini semacam terminal khusus, sepenuhnya terpisah dari cmd.exe?

Terminal selalu terpisah dari cmd.exe. Anda sedang melihat jendela Konsol Windows standar, sekarang juga dikenal sebagai Conhost . (Di era Win2000 / XP itu adalah bagian dari CSRSS.)

Baik cmd.exe dan php.exe tidak memiliki antarmuka pengguna grafis sendiri - mereka hanya secara ajaib memanggil Conhost saat dimulai.

Ada juga php-win.exe yang dapat dieksekusi di C: \ PHP. Saya tidak pernah bisa mencari tahu apa ini atau apa bedanya dari php.exe di direktori yang sama.

Seperti yang disebutkan, php.exe memanggil jendela terminal Conhost ketika dimulai - tetapi itu bukan sesuatu yang dilakukan oleh php.exe , ini sebenarnya terjadi secara otomatis karena Windows mengenali bahwa file php.exe ditandai sebagai "aplikasi konsol". Itu akan selalu diluncurkan di konsol, apakah itu diwarisi dari cmd.exe (saat menjalankan skrip .bat) atau apakah itu yang baru (saat mengklik dua kali php.exe).

Jadi php-win.exe hampir persis sama, tetapi file .exe tidak ditandai sebagai "konsol" - melainkan ditandai sebagai "aplikasi GUI", dan akan berjalan sama sekali tidak terlihat (kecuali Anda menggunakannya untuk menjalankan skrip yang misalnya memanggil PHP-GTK atau PHP / Tk untuk membuat jendela GUI).

Untuk alasan yang sama, Python hadir dengan python.exe dan pythonw.exe di Windows - satu untuk membangun alat berbasis CLI, yang lainnya untuk membangun aplikasi grafis.

Hal "Windows Terminal" ini sepertinya saya dengar selama bertahun-tahun, tapi masih belum bisa ditemukan di mesin saya.

Ini dapat diinstal melalui Microsoft Store jika Anda memiliki Windows 10.

(Perhatikan bahwa jika Anda menginstalnya, itu tidak akan menggantikan Conhost sepenuhnya - itu hanya akan digunakan ketika Anda membuka aplikasi Terminal sendiri. Mengklik dua kali pada konsol .exe akan tetap menampilkannya di Conhost.)

Idealnya, saya ingin memiliki ikon kustom saya sendiri, tidak diambil dari cmd.exe atau php.exe, tetapi satu-satunya cara yang saya temukan untuk melakukannya di masa lalu adalah dengan menyalin cmd.exe, memodifikasinya dan lalu gunakan itu di mana saja. Itu bukanlah solusi yang elegan atau masuk akal.

Salin php.exe dan ubah yang itu. Atau gunakan php-win.exe bersama dengan beberapa modul PECL (mungkin w32api) yang memungkinkan Anda membuat jendela konsol sesuai permintaan.