2010-08-26 42 views
8

Các kịch bản tôi đang cố gắng để chạy qua shell_exec trong PHP đòi hỏi một biến môi trường được thiết lập, trong đó afaik được thực hiện thông qua:Làm thế nào để thiết lập biến môi trường dòng lệnh trong PHP shell_exec

export VARIABLE=value 

Tuy nhiên, để chạy kịch bản Tôi buộc phải làm:

<?PHP 
$sOutput = shell_exec("export VARIABLE=value && my_command_goeth_hereth"); 

Đường nối không cần phải xuất biến mỗi khi tôi chạy bất kỳ lệnh nào.

Đây có phải là cách duy nhất để làm điều đó hay tôi thiếu một cách đơn giản hơn nhiều?

Trả lời

13

Vì biến môi trường được kế thừa, hãy đặt chúng bên trong tập lệnh của bạn cũng sẽ đặt chúng cho các lệnh mà nó khởi chạy. Bạn chỉ cần sử dụng putenv.

putenv("VARIABLE=value"); 
6

Sẽ không chỉ:

<?PHP 
shell_exec('SOMEVAR=SOMEVAL /some/program'); 

làm các việc lừa?

Nếu bạn đang chạy nhiều tập lệnh shell, thì putenv là bạn của bạn, như zneak đã chỉ ra.

EDIT với một exmaple:

env.php:

<?PHP 
echo $_ENV['FOO']; 
echo "\n"; 

runenv.php:

<?PHP 
echo shell_exec('FOO=bar php env.php'); 

sau đó thử $ php runenv.php

+0

Tại sao điều này bất kỳ khác nhau từ những gì tôi đang làm ở trên? tức là 'xuất VARIABLE = giá trị && lệnh ' –

+0

nó gần như giống nhau. Nhưng bạn không cần xuất nếu bạn chỉ muốn môi trường áp dụng cho một tập lệnh/chương trình. Nhiều hơn một và bạn có thể tốt hơn với putenv() – timdev

Các vấn đề liên quan