Шебанг #! нераспознанный в Ubuntu, файл создан в Windows7 | Устранение неполадок кодирования - PullRequest
1 голос
/ 22 марта 2011

По сути, файл был поврежден где-то по пути из Windows7 в Ubuntu.

Как я могу посмотреть двоичное представление файла, чтобы увидеть, что произошло?

Ответы [ 5 ]

10 голосов
/ 22 марта 2011

Скрипт командной строки PHP по-прежнему должен иметь открывающее окно <?php.

#!/usr/bin/php
echo "hi mom!\n";

не будет работать, оно должно быть

#!/usr/bin/php
<?php
    echo "hi mom!\n";

Это потому, что неттакая вещь, как "скрипт PHP".Существуют только различные текстовые файлы, в которые встроены блоки кода PHP.Даже в режиме CLI PHP ожидает / требует увидеть хотя бы один блок <?php.В противном случае интерпретатор не сработает и не увидит никакого кода, даже если вы заявили, что это PHP-скрипт с шебангом.

Режим PHP cli по сути является взломанной запоздалой мыслью.PHP начинался как серверный синтаксический анализатор CGI-скриптов и принципиально не изменился с этого режима.

3 голосов
/ 27 февраля 2012

Попробуйте открыть его с помощью vi (m), и вы увидите проблему. Это плохой интерпретатор (^ M) в конце каждой строки. Попробуйте конвертировать его (из dos или dos2unix), это решит проблему; -)

3 голосов
/ 22 марта 2011

Вы бегали с ./?

IE:

./myscript.php
2 голосов
/ 06 апреля 2011

Я предполагаю, что файлы, созданные в Windows, имеют спецификацию, которая вводит в заблуждение.

1 голос
/ 29 марта 2012

При использовании Notepad ++ на компьютере с Windows можно изменить символ EOL с Windows на UNIX, выбрав

Правка> Преобразование EOL> Формат UNIX

EOL menu option in Notepad++

Дважды проверьте строку состояния Notepad ++ в правом нижнем углу, чтобы подтвердить свой выбор.

EOL status in Notpadd++

После сохранения и запуска из командной строки вы должны обнаружить, что директива интерпретатора PHPтеперь правильно распознан.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...