Nasıl şu anda çalışan PHP yürütülebilir öğrenebilirim?

4 Cevap php

Bir PHP program içerisinden bunu yürütme ikili yerini bilmek istiyorum. Perl, bu amaç için $^X vardır. PHP bir eşdeğer var mı?

Bu yüzden (yerine sabit kod, bir yol veya daha "php" varsaymak doğru) kendisi ile çocuk PHP süreci yürütmek olduğunu.

UPDATE

  1. Ben lighttpd + FastCGI değil, Apache + mod_php kullanıyorum. Yani evet, bir PHP ikili vardır.
  2. eval / Ben isteği dışında yaşamak olan bir sunucu yumurtlama ediyorum, çünkü bir çözüm değildir içerir.

Things I've tried and don't work:

  • $_SERVER['_'] Ben komut satırından ama ne istiyor gibi görünüyor onun aslında son çalıştırılan programın kabuk tarafından belirlenen bir ortam değişkeni. Bir web sunucusundan çalıştırdığınızda bu web sunucusu ikili.
  • PHP ikili web sunucusunun PATH olduğu gibi aynı olması garanti edilmez, çünkü which php çalışmayacaktır.

Şimdiden teşekkürler.

4 Cevap

PHP_BINDIR sabiti size php ikili dizin verir

Evet, $_SERVER['_'] sen kadar yakın var gibi bahsediyoruz, ya da konum budur. Bu web çalıştırıldığı zaman bir Web sunucusu ikili alıyoruz sebebi /usr/bin/php Web sunucusunun yürütme ile ilgisi olduğunu; ne çalıştıran ayrı bir SAPI olduğunu. Olması için hiçbir neden yok, çünkü /usr/bin/php işaret web PHP örneğinden bir şey yok.

what about: <?php exec("which php"); ?>

D: Ama unix / linux sadece bulunuyor

PHP_BINDIR sabit muhtemelen kullanımı kolay şey; Ben ile gelebilir sonraki en iyi şey, temelde extension_dir yapılandırma ayarı o bindir yolunu yeniden yaratıyor:

$phpbin = preg_replace("@/lib(64)?/.*$@", "/bin/php", ini_get("extension_dir"));

O bir regex vardır, bu yüzden daha fazla yerli perl gibi hissediyor (!) Ama aksi özellikle optimal değildir.