Nasıl PHP'nin exec için kabuk değiştirmek () yok

2 Cevap php

I want to use php's exec() function on an ubuntu server. The problem is, I alway get an error, that the command is not found. For example using

exec("echo 123");

baskılar

sh: / echo: bulunamadı

To me, it looks like php is using the sh shell, when I want to be using bash. I tried changing the shell for www-data in /etc/passwd, that didn't help either.

Herkes sorunun geliyor olabilir veya nasıl php ubuntu kullanıcı için kabuk değiştirebilir başka bir fikri var mı.

Teşekkürler, Timo


[EDIT]

Belki bu yardımcı olur:

Ben timo gibi ssh bir bash komut dosyası çağırın, bu komut exec kullanan bir php komut dosyası çağırır. Kulağa garip geliyor, biliyorum, ama bu büyük bir geliştirme ortamının parçası ...

Nokta ben exec içinde komut dosyası çalıştırıldığında hangi kullanıcı olarak, hiç emin değilim, olduğunu.


[EDIT]

By now I figured out that there must be another rights problem involved. Even if I try calling a bash script test.sh (by it's full path!) from within exec, php test.php will just say.

sh: / test.sh: bulunamadı

2 Cevap

Yerine () shell_exec sahipsiniz. exec programı yürütmek için herhangi bir kabuk çağırmak gerekir. Alternatif olarak, sizin gibi exec ile bash çağırabilirsiniz

exec ("/ bin / bash-c \" echo $ foo> bar.txt '\ "")

Ne yapmak istiyorsanız ise:

/usr/bin/mysql --user=asdf --password=asdf mydb < ./dump.sql

Sonra bu (ne olursa olsun kabuğun) işe düşünün:

/usr/bin/mysql --user=asdf --password=asdf mydb < /full/path/to/dir/dump.sql