2014-02-12 6 views
12

У меня проблема с добавлением shebang #! с моим php-скриптом на RedHat linux. У меня есть небольшая часть тестового кода с добавлением shebang (я тоже пробовал разные варианты), но каждый раз, когда я пытаюсь запустить скрипт, я получаю следующее сообщение об ошибке. сообщКак добавить shebang #! с php скриптом на linux?

Ошибка:

-bash: script.php: command not found 

тест сценарий:

#!/bin/env php  
<?php echo "test"; ?> 

хижину #! Варианты:

#!/usr/bin/php 
#!/usr/bin/env php 
+1

Это очевидно - вот почему он спрашивает :) – Banago

+0

@JoelFan документация PHP, похоже, не согласна с вами: http://www.php.net/manual/en/features.commandline.usage.php#example-375 –

+1

@JoelFan - у людей есть свобода выразить свои глупые мысли в блогах, не делайте этого на сайте, где мы помогаем другим разработчикам. Спасибо. Чтобы ответить на вопрос об ошибке - это, скорее всего, из-за комбинации CR \ LF, которая появляется после вашей первой строки. Используйте шестнадцатеричный редактор, чтобы проверить, есть ли у вас \ n \ r, и если да, удалите возврат каретки. CHMOD + x yourfile.php, чтобы сделать его исполняемым. –

ответ

25

Это должно (для большинства систем) быть #!/usr/bin/env php, но ваша ошибка не связана с этим.

-bash: script.php: command not found 

Он говорит, что script.php не найден.

Если проблема была притон линии, то ошибка будет что-то вроде:

bash: script.php: /usr/env: bad interpreter: No such file or directory 

Предположительно, вы набираете script.php и файл не находится в каталоге на $PATH или не является исполняемым.

  1. Сделайте его исполнимым: chmod +x script.php.
  2. Введите путь к нему, а не только имя файла, если оно находится в текущем каталоге: ./script.php.

Вместо 2, вы можете перемещать/копировать/симлинки файл где перечислены в $PATH или modify the $PATH включить каталог, содержащий сценарий.

+1

Также убедитесь, что у вас есть окончание строк Unix в скрипте, а не в DOS. Окончание строк DOS даст вам аналогичную ошибку. –

10

Если сценарий не находятся в вашем /usr/local/bin и является исполняемым, вы должны префиксом вызова скрипта с php, как это:

php myscrip.php 

Для shebangs, вот что я использую:

Как это:

#!/usr/bin/php 

или это:

#!/usr/bin/env php