2011-08-02 24 views
5

Mam skrypt PHP, który chcę wywołać w akcji formularza.Co oznacza "Dwuznaczne przekierowanie wyjścia"?

To polecenie działa prawidłowo:

/usr/local/bin/php -q script.php > /dev/null 2>&1 & 

Ale to wszystko nie udać, gdy dodam argumenty w poleceniu:

/usr/local/bin/php -q script.php --var=value > /dev/null 2>&1 & 

zwraca przekierowanie wyjścia „niejednoznaczne”.

Przeczytałem ten artykuł http://www.xaprb.com/blog/2006/06/06/what-does-devnull-21-mean/ i próbowałem prawie wszystkiego co możliwe, o ile mogę zrozumieć, i nadal nie mam pojęcia, jak to naprawić.

Proszę, pomóż mi.

+0

to działa bez --var ?, tylko "/ usr/local/bin/php -q script.php wartość>/dev/null 2> & 1 &" i pobierz go z tablicy $ argv – sukinsan

+0

Którą powłokę używasz? – jw013

+0

Używam standardowej powłoki FreeBSD –

Odpowiedz

4

Zakładam, że używasz csh lub jeden z jego wariantów, użyj:

... >&/dev/null 
+0

nie używam prostego polecenia PHP shell_exec z /usr/local/bin/php -q script.php --var = wartość>/dev/null 2> & 1 & i zwraca Niejednoznaczne przekierowanie wyjścia –

+0

, ale powłoka shell_exec wywołuje "prawdziwą" powłokę ;-). Wykonaj polecenie php takie jak shell_exec ("Echo $ SHELL") i daj nam znać na wyjście. LUB jeśli wiesz, że dzwoni do basha, powiedz nam to. Powodzenia. – shellter

0

wykonuje następujące prace dla Ciebie:

/usr/local/bin/php -q script.php --var=value > /dev/null 2>/dev/null & 
+0

już wypróbowałem to, nie działało .. proszę mi pomóc, jeśli ktoś może dać mi trochę wewnątrz (trochę więcej szczegółów) jak to działa .. i jak możemy to wykorzystać w praktyce. –

1

Należy spróbować tego:

/usr/local/bin/php -q script.php --var=value > &1 & 

I daj nam znać konsekwencje uruchomienia tego polecenia.

Czy otrzymujesz prawidłowo przekierowanie wyjścia?

Uważam, że ten błąd jest w jakiś sposób związany z prawami użytkownika w systemie operacyjnym. Uruchomiłem dokładnie to samo polecenie w środowisku testowym, na którym działa AiX, używając użytkownika root i działało dobrze, ale gdy spróbowałem jak jakiś inny użytkownik, otrzymałem komunikat "Dwuznaczne przekierowanie".

Albo użytkownik nie ma dostępu do STDERR, wskaźnik STDOUT, ani uprawnienia dostępu w pewien sposób ograniczają przekierowanie.

Mam nadzieję, że to pomoże. EDIT: Może ten link pomoże: http://www.faqs.org/faqs/unix-faq/faq/part2/section-9.html