Próbuję wywołać skrypt, który trwa kilka sekund (serwisy internetowe z 3rd party) przy użyciu wywołania PHP exec. Po wielu zmaganiach ograniczyłem to do klasycznego przykładowego świata witaj. Skrypt wywołanie wygląda następująco:Nie można wykonać skryptu PHP za pomocą PHP exec
exec('/usr/bin/php /home/quote2bi/tmp/helloworld.php > /tmp/execoutput.txt 2>&1 &');
Gdy uruchomię to wyjście execoutput.txt
zawiera kopię strony Wywoływanie skryptu, nie hello world
jak się spodziewałem.
Dlaczego nie mogę uzyskać tego skryptu PHP do wykonania przy użyciu exec? Zauważ, że kiedy zmieniam polecenie na coś takiego jak ls -l
, dane wyjściowe są katalogami zgodnie z oczekiwaniami. btw, w razie potrzeby, zrobiłem chmod wywoływanego skryptu do 755 ...
Aktualizacja - Przeniosłem wywołanie exec na koniec wywołującego skryptu i przynajmniej teraz nie widzę skryptu wywołującego wykonane na wyjściu. Piszę plakaty, a ja spróbuję niektórych z tych pomysłów.
Pomoc!
Dzięki Steve
John - dziękuję za odpowiedź, ale niestety to nie zadziałało. Kiedy próbowałem: exec ('/ home/quote2bi/tmp/helloworld.php> /tmp/execoutput.txt 2> & 1 &') ... Otrzymałem te same wyniki (bieżąca strona w pliku wyjściowym). Drugi exec zablokowany (brakujący &) - po dodaniu mam te same wyniki. –
Czy istnieje opcja, jeśli funkcja exec() jest wyłączona na moim serwerze –