- HackWare.ru
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- Как запустить PHP скрипт без веб-сервера
- Как запустить PHP скрипт в командной строке Linux
- Как запустить PHP скрипт в командной строке Windows
- Справка и опции запуска PHP скриптов в командной строке
- Как запустить .php скрипт в командной строке Windows и Linux
- Как передать аргументы PHP скрипту в командной строке
- Как в PHP скрипте обратиться к аргументам
- Как в PHP получить данные от пользователя в консоли
- Проверка синтаксиса скрипта PHP в командной строке
- Выполнение команд PHP в интерактивном режиме
- Запуск отдельных команд PHP
- Запуск встроенного в PHP веб-сервера
- Получение справки в командной строке
- Опции для разработчика
- Вывод информации о PHP
- PHP не может сохранить файл даже если достаточно прав на запись
- Заключение
- Настройка среды разработки для PHP веб-разработчика в Windows
- Начнём с установки PHP
- Система контроля версий
- Менеджеры зависимостей NPM, Bower и Composer
- После установки NPM можно приступить к установке Bower
- Composer
- Система сборки проекта Gulp
- Виртуальная среда Vagrant
- Система развёртывания Capistrano
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Как запустить PHP скрипт без веб-сервера
Интерпретатор PHP стал неотъемлемой частью практически каждого веб-сервера. Подавляющее большинство веб-приложений написаны на PHP. Поэтому технология PHP очень стойко у многих ассоциируется именно с веб окружением, со средой веб-сервера. Но на самом деле, запускать скрипты PHP можно без веб-браузера. Речь идёт не о специально созданных как веб приложения программах, таких как WordPress, phpMyAdmin, гостевые книги, форумы и прочее. Такие скрипты специально создавались для работы в условиях веб-сервера и для вывода результатов в веб-браузер. Вряд ли удастся полноценно с ними работать в командной строке. Речь идёт о консольных программах на PHP, которые могут выполнять различные, не обязательно связанные с веб сервисами функциями. По сути, PHP является очень гибким языком с хорошим набором классов и на нём можно написать консольную программу под любые функции. Либо ядро программы (так называемый бэк-энд) к которому будер обращаться графический пользовательский интерфейс.
Ещё запуск PHP скриптов в консоли удобен для изучающих язык. Хотя кто-то может с этим не согласиться. При выводе результатов в консоль, а также при передаче аргументов в скрипт, не нужно уделять внимание HTML. Но если вы изучаете PHP для создания веб-приложений и онлайн сервисов, то вам всё равно потом придётся доучивать особенности передачи аргументов из веб-браузера (в окружении сервера), а также HTML вообще, поскольку весь вывод скриптов нужно будет оформлять для браузеров пользователей.
Как запустить PHP скрипт в командной строке Linux
У вас должен быть установлен PHP, к счастью, в Linux интерпретатор PHP устанавливается очень просто, а в некоторых дистрибутивах присутствует по умолчанию. Если у вас его ещё нет, то установите его одной из следующей команд.
В Debian, Kali Linux, Linux Mint, Ubuntu:
В Arch Linux, BlackArch:
Установка полного веб-сервера в Linux Mint описана здесь, в Ubuntu здесь, в Arch Linux/BlackArch здесь, а в Kali Linux он уже установлен, про то, как его запустить здесь.
В остальном запуск скриптов в консоли, в том числе опции запуска, в Linux и Windows идентичные.
Если вы совсем новичок в Linux, то также смотрите Азы работы в командной строке.
Как запустить PHP скрипт в командной строке Windows
Если вы знакомы с запуском консольных программ в Windows или хотя бы в Linux, то для вас всё совсем просто — везде программы запускаются примерно одинаково. Но начнём по порядку для новичков.
Если вы хотите не только возможность запускать PHP из командной строки, но и полноценный веб-сервер Apache + PHP + MySQL на Windows, то выполните установку по этой статье.
Для запуска PHP в командной строке необязательно устанавливать веб-сервер, достаточно скачать и распаковать архив с PHP интерпретатором. О том, где скачать PHP с официального сайта и как разобраться с версиями, смотрите эту статью.
Если вы часто будете запускать PHP скрипты из командной строки Windows, то настоятельно рекомендуется Добавить путь до PHP в переменную окружения PATH в Windows. Благодаря этому не придётся каждый раз указывать полный путь до файла php.exe.
Теперь, когда PHP установлен и путь до php.exe добавлен в переменную окружения Windows, открываем командную строку, для этого нажмите сочетание клавиш Win+x и выберите Windows PowerShell.
Для проверки, что нормально установилось, посмотрим справку по PHP:
На самом деле, мы запускаем файл php.exe, но расширение можно отбросить. То есть предыдущая запись эквивалентна
Справка и опции запуска PHP скриптов в командной строке
Справка содержит опции для разнообразных вариантов запуска файлов .php в командной строке, поэтому приведу её перевод полностью.
Как можно увидеть, вариантов запуска много. Если вы не совсем поняли, что имелось ввиду, не беспокойтесь. В начале мы ознакомимся со значением опций, изучим, так сказать, матчасть, а затем приступим к конкретным примерам, которые внесут окончательную ясность.
Как запустить .php скрипт в командной строке Windows и Linux
Для запуска .php файла в консоли Windows используется следующая команда:
Опцию -f можно отбросить, то есть предыдущая и следующая команды равнозначны:
Я создал тестовый файл, который расположен по пути C:\Users\Alex\Documents\PHP\test.php тогда я могу запустить его в PHP так:
Как передать аргументы PHP скрипту в командной строке
Для передачи скрипту аргументов, перечислите их после имени файла, разделяя пробелом. Если сами аргументы содержат пробелы или другие символы, которые имеют особое значение для оболочки командной строки, то поместите эти аргументы в одинарные или двойные кавычки.
Пример запуска PHP скрипта с тремя аргументами:
Как в PHP скрипте обратиться к аргументам
Переданные аргументы содержаться в массиве $argv. Причём, порядковый номер аргумента соответствует номеру в массиве. То есть первый аргумент будет помещён в $argv[1], второй в $argv[2] и так далее.
Самый первый элемент массива с именем $argv[0] содержит полный путь до запускаемого скрипта.
Содержимое файла test.php:
Запустим его и передадим в скрипт три аргумента:
Как в PHP получить данные от пользователя в консоли
Благодаря передаваемым аргументам, скрипт может выполнять действия не только с прописанными в нём данными, но и с другими значениями, указанными при запуске скрипта.
Кстати, при работе в окружении веб-сервера, то есть когда PHP скрипт выполняет задачи для веб-сайта, возможность передать ему аргументы реализована с помощью HTTP методов GET и POST. Эти аргументы передаются перед запуском скрипта, и уже после запуска PHP скрипта новые данные отправить нельзя — нужно ждать завершения работы программы, и при необходимости запустить её ещё раз с новыми данными.
Во время работы скрипта может потребоваться ввод новых данных, в консоли это достигается с помощью строки запроса, в которую пользователь может ввести значение и нажать Enter для передачи его скрипту. В контексте веб-сайта такой возможности — передать данные уже во время выполнения скрипта — нет. То есть консольный запуск PHP скриптов с аргументами не только проще (не нужно возиться с HTML формой), но и даже более гибкий.
В PHP для запроса пользователю используется функция readline.
Эта функция одинаково работает и на Windows и на Linux. Причём на Linux она имеет интерактивные возможности Bash, например, сохраняет историю ввода, к которой можно вернуться с помощью стрелок. На Windows эта возможность появилась начиная с PHP 7.1.
Если сильно надо, можно настроить автозавершение вводимых данных. Все функции GNU Readline рассмотрены здесь. Я же коснусь только readline, которая считывает введённую пользователем строку. С этой функцией можно указать один опциональный аргумент — строку, которая будет показана пользователю в приглашении.
Пример консольного PHP скрипта, которые запрашивает у пользователя данные в приглашении командной строки:
Проверка синтаксиса скрипта PHP в командной строке
С опцией -l будет проверен синтаксис, то есть не нарушены ли правила кода PHP, но сам файл скрипт не будет выполнен:
Или если в файле есть ошибки:
Выполнение команд PHP в интерактивном режиме
Если вам это нужно, то можно работать с интерпретатором PHP в интерактивном режиме, вводя код построчно. При этом код выполняется после нажатия кнопки Enter, но значения переменных сохраняются в рамках одной сессии. То есть вы можете присвоить значение какой-либо переменной, а затем использовать его в других строках.
Для запуска интерактивного шелла:
Запуск отдельных команд PHP
Для выполнения отдельных команд используйте опцию -r:
Запуск встроенного в PHP веб-сервера
В PHP есть свой собственный веб-сервер! Если вам очень надо, можно вообще обойтись без сторонних серверов для каких-то определённых задач.
Допустим, в качестве прослушиваемого IP адреса я хочу установить 127.0.0.1, в качестве прослушиваемого порта — 84, корневая папка документов веб-сервера у меня расположена в C:\Users\Alex\Documents\PHP\, тогда команда запуска следующая:
В этой папке у меня файл test_2.php со следующим содержимым:
В самом браузере:
Можно было бы из спортивного интереса попробовать во встроенном веб-сервере запустить WordPress, но что-то лень…
Получение справки в командной строке
Для получения справки о функциях PHP прямо в командной строке используется опция —rf.
Ну как-то так… а чего вы хотели — это же консоль.
Насколько я понял, в строке Parameters в фигурных скобках пишется количество аргументов функции, строка required означает, что аргумент обязательный, а строка optional — что аргумент опциональный. О функции аргументов иногда можно догадаться по их имени, например, $filename. Информации о том, какое действие выполняет функция, видимо, нет.
Опции для разработчика
Если вы действительно пишите и отлаживаете код, в том числе для веб-сайтов, то вам пригодятся следующие опции:
Вывод информации о PHP
Для показа информации о PHP имеются следующие три опции:
Опция -i — это эквивалент phpinfo, но для консоли.
PHP не может сохранить файл даже если достаточно прав на запись
На самом деле это может случиться не только при запуске PHP скриптов из командной строки, но и при работе скрипта на веб-сервере. Но при запуске в консоли больше условий для получения этой проблемы: PHP скрипт не сохраняет файл в папку, на которую установлены права на запись для кого угодно (777).
Такое поведение может выглядеть необъяснимым, если вы не знаете о директиве open_basedir в главном конфигурационном файле php.ini. Данная директива ограничивает все файловые операции теми папками, которые указаны с ней. Пример:
Данная запись означает, что PHP скрипт может записывать файлы в папку /srv/http/, а также в папки /etc/webapps/, /usr/share/webapps/ и /tmp/.
Причём если директива open_basedir вообще не настроена (строка с ней, например, закомментирована), то PHP может записывать в любую папку, если у текущего пользователя достаточно прав на запись.
При работе в консоли PHP скрипт может пытаться сохранить файлы, например, в текущую папку — если эта папка не указана в open_basedir, но при этом сама директива open_basedir настроена, то возникнет описанная проблема: PHP не сможет записывать файлы даже в папку открытую для всех.
Чтобы избавиться от этой ошибки есть несколько вариантов:
- добавить папку, в которую вы хотите сохранить файл, в перечень open_basedir
- выбрать для сохранения папку уже указанную в open_basedir
- запустить интерпретатор PHP без чтения настроек из конфигурационных файлов (в этом случае не будет учтена директива open_basedir, а также вообще все другие конфигурации
Чтобы запустить PHP скрипт без учёта настроек файла php.ini используйте опцию -n, например:
Кстати, чтобы узнать, какие именно файлы настроек учитываются при работе PHP, выполните следующую команду:
Заключение
Запуск PHP скриптов в командной строке — это альтернатива их запуску через веб-сервер. Работа в консоли может быть удобна при обучении языку программированию PHP или для отладки определённых функций, даже если в дальнейшем эти функции и скрипты будут работать на веб-сервере.
Скрипт на PHP может быть альтернативой скрипту на Bash, особенно если нужно использовать СУБД (MySQL, SQLite) — с которыми через Bash работать тяжело, либо для использования возможностей PHP по работе с текстом в разметке XML, JSON — что в Bash также не очень удобно.
В любом случае, нужно знать о такой возможности, поскольку некоторые программы, особенно такое можно увидеть среди эксплойтов, представляют собой PHP скрипты, предназначенные для запуска в командной строке с аргументами.
Настройка среды разработки для PHP веб-разработчика в Windows
Первые два года своей профессиональной деятельности в создании сайтов я работал под Linux. Но при всей гибкости и мощности этой системы она, всё же, неудобна в мелочах. Однажды, эти мелочи перевесили все прочие плюсы и я решился пересесть на Windows. Сейчас я совершенно не жалею о потраченном времени на настройку среды разработки, а моим рабочим ноутбуком, который по совместительству является и домашним, стало гораздо удобнее пользоваться.
Этот пост может сэкономить время тем, кто так же как и я собирается перейти на Windows и тем, кто только ещё начинает работать PHP-программистом или веб-разработчиком. Для полноценной веб-разработки понадобятся: виртуальная среда, система контроля версий, менеджеры зависимостей, система сборки приложений, система развёртки приложений и, конечно, хороший редактор кода. Я не буду рассказывать зачем нужен каждый из компонентов, а лишь дам инструкцию по его установке в Windows. Я использую Vagrant, Composer, NPM, Bower, Git, Gulp, Capistrano и PHPStorm, дальше пойдёт речь именно об этих технологиях. Инструкции даны для Windows 10.
Начнём с установки PHP
Для разработки я использую PHP 7, чтобы мой код был совместим с ним, когда я соберусь переезжать. На боевых серверах у меня пока что PHP 5.6. Для того, чтобы случайно не написать код, который не будет работать в продакшене в моём PHPStorm указан уровень языка 5.6.
Для работы в Windows у PHP есть специальная версия языка, которую можно скачать с сайта PHP. Для того, чтобы установить PHP 7 в операционной системе Windows понадобится программа Visual C++ Redistributable for Visual Studio 2015, которую можно скачать с официального сайта Майкрософта. Установка этой программы не содержит никаких трудностей, нужно просто нажимать кнопку «Далее».
После установки Visual C++ Redistributable скачиваем архив PHP 7 для Windows (VC14 Non Thread Safe x64 или x86 в зависимости от разрядности системы) c официального сайта PHP. В архиве нет инсталлятора, его просто нужно распаковать в папку где-нибудь на диске. В пути к этой папке не должно быть пробелов и русских букв, у меня это C:\php.
После распаковки нужно добавить PHP в системный PATH для того, чтобы можно было запускать PHP из любого каталога:
- нажимаем win+x;
- переходим в Advanced system settings;
- выбираем Environment Variables;
- выбираем переменну PATH и нажимаем кнопку Edit;
- нажимаем кнопку New и вводим адрес каталога с распакованным PHP, например C:\php;
- нажимаем кнопку Ok.
Теперь нужно настроить PHP для работы:
- переименовываем файл php.ini-production в php.ini ;
- раскоментируем (убираем знак ; ) перед строчками:
- extension=php_curl.dll ;
- extension=php_gd2.dll ;
- extension=php_mbstring.dll ;
- extension=php_openssl.dll ;
- extension=php_pdo_mysql.dll ;
- extension=php_pdo_sqlite.dll ;
- extension=php_sqlite3.dll .
Всё, PHP 7 установлен в системе и готов к использованию.
Система контроля версий
Установить Git на Windows проще простого. В качестве приятного бонуса вместе с Git поставляется консоль Git bash. Работать с этой консолью гораздо удобнее, чем со стандартной CMD в Windows. Кроме того, она понимает некоторые полезные линуксовские команды, такие как find, ls и прочие.
При установке Git под Windows вам нужно будет прописать git.exe в PATH вашей системы, чтобы Git можно было запускать из любого места в командной строке. А также указать Git’у, чтобы при получении кода он не менял символы окончания строк в файлах (эти символы отличаются на системах с Linux и Windows). Всё это делается парой кликов мышкой через инсталятор Git.
Вот скриншоты важных страниц установки Git:
- Экран выбора установки программ в PATH вашей системы. Выбирайте средний вариант — так вы сможете использовать Git из командной строки из любого каталога и не потревожите стандартные программы Windows find и sort;
- Здесь мы указываем как Git будет поступать с символами окончания строк. На Windows и Linux эти символы разные и Git может менять их перед отправкой и получением кода из репозитория. В моём случае лучший выбор — это не вмешиваться в код при получении и следить за тем, чтобы в репозиторий не попадали файлы с символами Windows-style.
- Последний экран не столь важен, здесь можно указать что будет в основе надстройки Git Bush — стандартная консоль Windows или MinTTY. Если у вас Windows до 10 версии, то лучше выбрать MinTTY.
После установки укажите Git’у ваше имя и электронную почту. Эти данные будут передаваться с каждым коммитом и их нельзя будет изменить.
Откройте Git Bush и запустите две команды:
На этом первоначальная настройка Git закончена.
Менеджеры зависимостей NPM, Bower и Composer
Для того, чтобы получить NPM нужно установить NodeJS.
У NodeJS есть официальный установщик для Windows, поэтому установка будет проще простого:
- скачиваем установщик с официального сайта NodeJS;
- запускаем скаченный установщик и нажимаем несколько раз кнопку Next, попутно соглашаясь с условиями.
Для того, чтобы проверить, установился ли NodeJS и NPM, откройте консоль Windows или Git bush (если консоль уже была открыта, то нужно её закрыть и открыть снова, чтобы обновить системный PATH) и выполните команды:
Если команды выдали версии, например: «v6.2.0» и «3.8.8», то это значит, что всё успешно установлено и можно работать.
После установки NPM можно приступить к установке Bower
Здесь всё просто, введите в командной строке:
Параметр -g нужен для того, чтобы установить Bower глобально и иметь возможность запускать его из любого каталога.
Composer
У пакетного менеджера Composer есть специальный установщик для Windows. Скачать его можно с официального сайта. Сама установка элементарна и займёт не больше 5 минут, но есть две особенности.
Во первых, перед установкой Composer нужно установить PHP. О том как это сделать написано в начале поста. Во вторых, после установки Composer нужно передать ему специальный GitHub Tokken для того, чтобы обойти ограничени GitHub’а на количество обращений по API.
Но начнём с установки. После скачивания и запуска установщика он попросит указать путь к PHP. Если вы добавили PHP в PATH, как указано у меня в инструкци, то Composer сам определит этоть путь. Если нет, то вам нужно указать этот путь самостоятельно.
После этого нужно ещё несколько раз нажать Next и Composer будет установлен в систему и доступен через командную строку из любого каталога.
В процессе работы с Composer программа в какой-то момент сама предложит вам ввести GitHub Tokken и даст ссылку на его создание. Но можно не ждать этого и сделать всё самому. Создать токен можно на специальной странице GitHub’а. Для того, что передать токен Composer’у нужно ввести в командной строке команду
Всё, на этом Composer установлен и готов к использованию.
Система сборки проекта Gulp
Так как он часть экосистемы NPM, то тут всё просто:
Параметр -g нужен для того, чтобы установить Gulp глобально и иметь возможность запускать его из любого каталога.
Виртуальная среда Vagrant
Для установки Vagrant в Windows предварительно понадобится установить один из провайдеров виртуальной среды. Я использую VirtualBox от Oracle. Установка обеих программ не составляет абсолютно никакого труда и требует только вовремя нажимать кнопку Next.
Ссылки на страницы откуда можно скачать установщики:
- VirtualBox;
- Vagrant.
После установки, Vagrant можно будет запускать из командной строки из любого каталога.
Система развёртывания Capistrano
Для того, чтобы установить Capistrano на Windows в первую очередь нужно установить язык программирования Ruby. В этом нет ничего сложного, для установки языка в Windows существует специальный проект rubyinstaller.org. Нужно лишь скачать установщик и несколько раз нажать кнопку Next. Не забудьте только поставить галочку напротив пункта о добавлении Ruby в PATH Windows.
Это позволит запускать Capistrano из любого каталога, что очень удобно.
После установки Ruby настало время установить Capistrano. Откройте командную строку (если она была открыта, до установки Ruby, то закройте и откройте её снова, чтобы обновить данные из PATH) и введите команду:
Эта команда установит Capistrano в систему и в дальнейшем его можно будет запускать командой:
Как видите, всё элементарно.
Все необходимые компоненты установлены. Осталось только выбрать хороший редактор кода. Я использую PHPStorm, так как он поддерживает все инструменты, которые перечислены в этом посте и ежемесячная индивидуальная подписка на эту программу стоит меньше $10. Но, конечно, можно установить любой редактор на свой вкус.
Сразу после установки PHPStorm на Windows нужно сделать две важные настройки:
- указать UTF-8 в качестве кодировки всех файлов по умолчанию;
- указать символ \n в качестве символа окончания строки по умолчанию.
Это необходимо сделать, так как всё тестирование и работа сайтов идёт в среде Linux и неверные символы окончания строк и кодировка файлов может приветси к разным ошибкам, у которых трудно будет выявить причину.
Обе настройки находятся в разделе Editor. Попасть в настройки можно с главного экрана PHPStorm.
Либо с верхнего меню через File -> Default settings.
Окончание строк в файлах настраиваем в разделе Editor -> Code Style.
Кодировку файлов настраиваем в разделе Editor -> File Encodings.
На этом всё. На установку всех компонентов понадобится примерно час времени.
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.