Komut dosyası içinde geçerli PHP yürütülebilir olsun?

7 Cevap php

Ben PHP CLI içinde bir PHP cli programı çalıştırmak istiyorum. Bu çalışacak bazı makinelerde, PHP4 ve PHP5 hem yüklenir. Ben dış programı olarak çalıştırın

php5 outer.php

Ben iç komut aynı php sürümü ile çalıştırmak istiyorum. Perl, ben $^X Perl yürütülebilir almak için kullanmak istiyorum. Bu böyle değişken PHP var görünür?

Bash (ve zsh) son çalışma programına ortam değişkeni $_ set çünkü şu anda, ben, $_SERVER['_'] kullanıyorum. Ama ben daha çok bir kabuk özgü deyim dayanmaz ediyorum.

UPDATE: Sürüm farklılıkları vardır ama bir sorun. PHP, örneğin PATH değil, ya da PATH bulunan ilk sürüm değilse, sürüm bilgilerini bulmak için öneriler yardımcı olmayacaktır.

Ayrıca, csh ve varyant işlemleri için $_ ortam değişkeni ayarlamak değil görünür, bu yüzden geçici çözüm orada geçerli değildir.

Ben ... hangi mantıklı (xargs altında doğru olanı yapmaz keşfetti kadar UPDATE 2: I $_SERVER['_'] kullanan {[(3) )]} xargs, değil php5 olan bu koştu komutuna ayarlar, ve xargs değişkeni değişmez. Kullanarak geri Falling:

$version = explode('.', phpversion());
$phpcli = "php{$version[0]}";

7 Cevap

Worth şimdi PHP 5.4 + sihirli sabiti kullanabilirsiniz belirterek:

PHP_BINARY
Specifies the PHP binary path during script execution. Available since PHP 5.4.

Benim sunucuda ben 5.3.14 php ettik.

Önceden tanımlı bir sabit buldum: PHP_BIN_DIR

Daha sonra, çalıştırılabilir dosya dosya adını supposing 'php' her zaman, $php_cmd = PHP_BIN_DIR.'/php' benim PHP çalıştırılabilir dosyaya işaret.

Eğer "iç" komut dosyasını çalıştırmadan önce phpversion() PHP güncel sürümünü almak için kullanabilirsiniz.

http://php.net/manual/en/function.phpversion.php

Tamam, bu çirkin, ama Linux üzerinde çalışır:

<?php
    // Returns the full path of the current PHP executable
    function get_proc_name(){
       // Gets the PID of the current executable
       $pid = posix_getpid();

       // Returns the exact path to the PHP executable.
       $exe = exec("readlink -f /proc/$pid/exe");
       return $exe;
    }

Ben daha sonra bir Windows sürümü üzerinde çalışıyor deneyeceğim.

EDIT

Windows için bunu yapmak için herhangi bir kolay yolu var gibi görünmüyor. Gibi bazı Windows çalıştırılabilir tasklist çalıştırılabilir olduğu için tam yolunu size yürütülebilir adını vermek, ama olamaz. Ben sadece C++, AutoHotkey ve benzerleri için bir PID verilen tam yolunu bulmak için örnekler bulmak mümkün oldu. Herkes bakmak nereye başka herhangi bir öneriniz varsa, bana bildirin.

PS: Windows için PHP PID, görünüşe aramak zorunda almak için getmypid().

Yararlı bir şey var mı $_ENV?

Unix üzerinde SHELL ortam değişkeni şu anda çalışmakta kabuk yolu vardır. Eğer PHP dosyanın üstüne #!/path/to/php eklerseniz, bu çalıştırılabilir yapmak ve doğrudan dosyasını çalıştırın, $_ENV['SHELL'] içermiyor /path/to/php?

Sen phpinfo () sonuç deneyin ve ayrıştırmak.

This answer was helpful for tracking down a php location: How to get the path of the PHP BIN from PHP?

Ayrıca pencere ve linux dostu :)