Запустить файл из консоли как PHP

144
07 сентября 2019, 19:40

Есть файлик без расширения, именуемый testfile, с содержимым:

#!/usr/bin/env php
<?php
echo 1111;

На текущий момент, если я пишу

testfile

то получаю ошибку:

testfile: command not found

Если пишу

php testfile

то всё хорошо.

Я хочу писать в консоли testfile и чтобы он исполнялся интерпретатором php. Я думал, что директива #!/usr/bin/env php должна делать задуманное, но нет.

Answer 1

Для того чтобы запускать в консоли какой-то файл на исполнение, надо, во-первых, дать этому файлу право на исполнение:

chmod +x testfile

Далее, разберемся в чем разница между ./testfile и testfile.

./testfile сообщает что "В текущей директории (так как . это обозначение текущей директории) найди файл testfile и запусти его"

testfile сообщает что "Найди файл testfile и запусти его". Естественно, поиск файла testfile по всему диску/дискам может затянуться, поэтому существует специальное ограничение - поиск ведется по путям, обозначенным в переменной PATH.

Ее значение можно получить например так:

> echo $PATH

Выведется нечто вроде

/usr/local/sbin:/usr/local/bin:

Здесь каждое значение между : обозначает путь, где система попытается найти ваш файл. Таким образом, можно, например, поместить testfile в каталог /usr/local/bin и свободно запускать теперь testfile, так как система его найдет. Вторым вариантом является модификация переменной $PATH и добавление туда вашего пути, чтобы система могла поискать исполняемый файл и в нем.

READ ALSO
Обрезка изображения на клиенте или на сервере?

Обрезка изображения на клиенте или на сервере?

Подскажите на какой стороне лучше резать изображение? Сам сайт на ограниченное посещение пользователей нагрузка не должна быть большей...

132
Преобразование текста в картинку PHP

Преобразование текста в картинку PHP

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

133
обойти сайты не нагружая сервера

обойти сайты не нагружая сервера

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

114