Saya memiliki skrip PHP yang perlu ditentukan apakah sudah dieksekusi melalui command-line atau melalui HTTP, terutama untuk keperluan format-output. Apa cara kanonik melakukan ini? Saya pikir itu adalah untuk memeriksa SERVER['argc']
, tetapi ternyata ini diisi, bahkan ketika menggunakan server API 'Apache 2.0 Handler'.
sumber
Ini akan selalu berhasil. (Jika versi PHP 4.2.0 atau lebih tinggi)
Yang membuatnya mudah digunakan di bagian atas skrip Anda:
sumber
CLI or die('not allowed');
CLI or die('not allowed');
itu sempurna.Which makes it easy to use at the top of your scripts
tidak benar-benar membuatnya terdengar seperti dua kegunaan terpisah. Ya, saya seorang ahli nujum.Berikut ini adalah implementasi Drupal 7: drupal_is_cli () :
Namun Drupal 8 merekomendasikan penggunaan
PHP_SAPI === 'cli'
sumber
kupikir
tidak akan diisi dari CLI.
Juga, semua kunci HTTP_ * di superglobal $ _SERVER tidak akan diisi dari CLI, atau lakukan dengan cara yang benar seperti yang baru saja disebutkan :-)
sumber
Halaman dokumentasi untuk
php_sapi
_name dengan jelas menyatakan cara kerjanya:Saya tidak yakin mengapa hop tidak berpikir bahwa PHP adalah untuk programmer yang serius (Saya seorang programmer yang serius, dan saya menggunakan PHP setiap hari), tetapi jika dia ingin membantu memperjelas dokumentasi maka mungkin dia dapat mengaudit semua server web yang mungkin PHP dapat berjalan dan menentukan nama-nama semua jenis antarmuka yang mungkin untuk setiap server. Pastikan untuk tetap memperbarui daftar itu saat server web baru dan antarmuka ditambahkan.
Juga, Bobby berkata:
Deskripsi untuk contoh menyatakan:
sumber