- Настройка среды разработки для PHP веб-разработчика в Windows
- Начнём с установки PHP
- Система контроля версий
- Менеджеры зависимостей NPM, Bower и Composer
- После установки NPM можно приступить к установке Bower
- Composer
- Система сборки проекта Gulp
- Виртуальная среда Vagrant
- Система развёртывания Capistrano
- Execute php in windows
- Описание
- Список параметров
- Возвращаемые значения
- Примеры
- Примечания
- Смотрите также
- User Contributed Notes 17 notes
Настройка среды разработки для 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 будет скрыт псевдонимом.
Execute php in windows
(PHP 4, PHP 5, PHP 7, PHP 8)
exec — Выполнить внешнюю программу
Описание
exec() выполняет команду command .
Список параметров
Команда, которая будет исполнена.
Если параметр output указан, то массив будет заполнен строками вывода программы. Завершающие пробелы, такие как \n , не будут включены в массив. Обратите внимание, что если массив уже содержит какие-либо элементы, то exec() добавит новые элементы в конец массива. Если же вы не хотите, чтобы функция добавляла новые элементы в конец, вызовите unset() на этом массиве, прежде чем передать его в exec() .
Если аргумент result_code присутствует вместе с output , тогда статус возврата выполненной команды будет записан в этой переменной.
Возвращаемые значения
Последняя строка из результата команды. Если требуется выполнить команду и получить все данные команды без какой-либо обработки, используйте функцию passthru() .
Возвращает false в случае возникновения ошибки.
Для получения результата выполнения команды, убедитесь, что параметр output инициализирован и используется.
Примеры
Пример #1 Пример функции exec()
Результатом выполнения данного примера будет что-то подобное:
Примечания
Если вы собираетесь передавать функции пользовательские данные, используйте функции escapeshellarg() или escapeshellcmd() для того, чтобы пользователи не смогли обмануть систему, запустив произвольную команду.
Если вы собираетесь использовать эту функцию в программе, работающей в качестве демона, убедитесь, что стандартный вывод функции направлен в файл или другой поток, в противном случае PHP зависнет вплоть до конца выполнения программы.
В Windows функция exec() стартует cmd.exe для запуска команды. Если вы хотите запустить внешнюю программу без запуска cmd.exe, то используйте функцию proc_open() с установленной опцией bypass_shell .
Смотрите также
- system() — Выполнить внешнюю программу и отобразить вывод
- passthru() — Выполнить внешнюю программу и отобразить необработанный вывод
- escapeshellcmd() — Экранировать метасимволы командной строки
- pcntl_exec() — Запустить указанную программу в области текущего процесса
- Оператор исполнения
User Contributed Notes 17 notes
This will execute $cmd in the background (no cmd window) without PHP waiting for it to finish, on both Windows and Unix.
function execInBackground ( $cmd ) <
if ( substr ( php_uname (), 0 , 7 ) == «Windows» ) <
pclose ( popen ( «start /B » . $cmd , «r» ));
>
else <
exec ( $cmd . » > /dev/null &» );
>
>
?>
(This is for linux users only).
We know now how we can fork a process in linux with the & operator.
And by using command: nohup MY_COMMAND > /dev/null 2>&1 & echo $! we can return the pid of the process.
This small class is made so you can keep in track of your created processes ( meaning start/stop/status ).
You may use it to start a process or join an exisiting PID process.
// You may use status(), start(), and stop(). notice that start() method gets called automatically one time.
$process = new Process ( ‘ls -al’ );
// or if you got the pid, however here only the status() metod will work.
$process = new Process ();
$process . setPid ( my_pid );
?>
// Then you can start/stop/ check status of the job.
$process . stop ();
$process . start ();
if ( $process . status ()) <
echo «The process is currently running» ;
>else <
echo «The process is not running.» ;
>
?>
/* An easy way to keep in track of external processes.
* Ever wanted to execute a process in php, but you still wanted to have somewhat controll of the process ? Well.. This is a way of doing it.
* @compability: Linux only. (Windows does not work).
* @author: Peec
*/
class Process <
private $pid ;
private $command ;
public function __construct ( $cl = false ) <
if ( $cl != false ) <
$this -> command = $cl ;
$this -> runCom ();
>
>
private function runCom () <
$command = ‘nohup ‘ . $this -> command . ‘ > /dev/null 2>&1 & echo $!’ ;
exec ( $command , $op );
$this -> pid = (int) $op [ 0 ];
>
public function setPid ( $pid ) <
$this -> pid = $pid ;
>
public function getPid () <
return $this -> pid ;
>
public function status () <
$command = ‘ps -p ‘ . $this -> pid ;
exec ( $command , $op );
if (!isset( $op [ 1 ]))return false ;
else return true ;
>
public function start () <
if ( $this -> command != » ) $this -> runCom ();
else return true ;
>
public function stop () <
$command = ‘kill ‘ . $this -> pid ;
exec ( $command );
if ( $this -> status () == false )return true ;
else return false ;
>
>
?>