Kabuk PHP bir değişken ihracat

2 Cevap php

Ben dışarıdan PHP erişilebilir olmalıdır değişkeni ayarlamak için çalışıyorum. İdeal olarak bu yerel bir değişken olmalıdır, ancak ortam değişkenleri de açığız.

Birincisi, ben putenv() denedim, ama bu hiçbir sonuç verir:

$ Php-r "putenv ('PHP_TEST = string');" ; echo $ PHP_TEST

$

When i call getenv() from the same script — it results in the right 'string' value. Safe mode is off, but the manual says 'PHP_' prefix is vital with safe=on so I use it just in case :)

Sonra system() deneyin ya shell_exec():

$ Php-r "shell_exec ('PHP_TEST = string');" ; echo $ PHP_TEST

$ Php-r "shell_exec ('ihracat PHP_TEST = string');" ; echo $ PHP_TEST

$

Is there a workaround? what might be the reason? I'm using Ubuntu Linux 9.10 "Karmic", but FreeBSD server gives the same result.

2 Cevap

Eğer bir kabuk değişkeni bazı çıktı geçmek için çalışıyorsanız, bunu şöyle yapabilirsiniz:

$ testvar=$(php -r 'print "hello"')
$ echo $testvar
hello

Ihracat şeyleri nasıl etkilediğini gösteren:

$ php -r '$a=getenv("testvar"); print $a;'
$ export testvar
$ php -r '$a=getenv("testvar"); print $a;'
hello

Bu örneklerde, etkileşimli kabuk üst süreçtir ve her şey gösterilen bir çocuk (ve birbirlerinin kardeşleri) olduğunu.

Ihraç Çevre değişkenleri alt süreçlerinde kullanılabilir.

Yani bir ortam değişkeni ayarlamak ve daha sonra bir çocuk süreç yumurtlamaya mümkün olacak. Ortam değişkeni o çocuk süreçte görünür olacaktır. Ancak (yukarıdaki örnekte, echo) php bunu ayarlama ve daha sonra successive sürecini başlatıyor çalışmaz.

Eğer değişkeni ayarlayın ve sonra yeni bir süreç exec / spawn olursa, bu yeni süreçte görünür olmalıdır.