PHP nie będzie działać z wiersza poleceń

1

Podczas próby uruchomienia skryptu PHP z poziomu terminala skrypt jest po prostu powtarzany na standardowe wyjście. Dzieje się tak, jeśli skrypt jest wykonywany bezpośrednio (pierwszy wiersz #!/usr/bin/php) wywoływany jako argument ( /usr/bin/php ./test.php) lub jeśli komendy php są wprowadzane interaktywnie.

Co może być problemem?

Komputer to El Capitan Server, 10.11.6; i nie zainstalowano dodatkowego MAMP / Apache / PHP. Na nie-serwerowym komputerze El Capitan wszystko działa zgodnie z oczekiwaniami; więc jestem zakłopotany ...

Dodanie danych wyjściowych polecenia ls:

sh-3.2# ls -lFa /usr/bin/php
-rwxr-xr-x  1 root  wheel  10577264 Jul  9 11:51 /usr/bin/php*
sh-3.2# 

Dodawanie większej wydajności:

sh-3.2# ls -lFa /var/root/test.php
-rwxr-xr-x  1 root  wheel  17 Nov 21 16:48 /var/root/test.php*
sh-3.2# cat /var/root/test.php
<?
phpinfo();
?>
sh-3.2# /usr/bin/php /var/root/test.php
<?
phpinfo();
?>
sh-3.2# od -c /var/root/test.php
0000000    <   ?  \n   p   h   p   i   n   f   o   (   )   ;  \n   ?   >
0000020   \n                                                            
0000021
sh-3.2# od -x /var/root/test.php
0000000      3f3c    700a    7068    6e69    6f66    2928    0a3b    3e3f
0000020      000a                                                        
0000021
sh-3.2# 
Kent
źródło
Co jest wypisywane z polecenia ls -l /usr/bin/php?
Graham Miln
@GrahamMiln - Zaktualizowano pytanie.
Kent
Dziękuję Ci. Czy skrypt może zawierać znaki inne niż ASCII lub być sformatowany w formacie UTF8 + BOM? Jeśli tak, spróbuj usunąć je, ponieważ mogłoby to wprowadzić w błąd powłokę. Mało prawdopodobne, ale warto spróbować. Czy też /usr/bin/php <absolute path to test.php>działa?
Graham Miln
Dodano więcej informacji, @GrahamMiln. Rozważyłem również problem UTF8, ponieważ oryginalny skrypt, który uruchomiłem, zawierał japońskie komentarze. Ale, jak widać, nie jest to problem ze skryptem testowym. Działa jako root, aby wykluczyć również problemy z uprawnieniami ...
Kent
Użyj „<? Php \ nphpinfo ();” zamiast zawartości test.php. „\ n” oznacza nową linię (której nie mogę wyrazić w komentarzu tutaj).
klanomath

Odpowiedzi:

1

Użyj długiego znacznika jak

<?php
phpinfo();

w test.php zamiast jakoś źle sformułowanym test.php i powinno działać.

klanomath
źródło