Как работать с php на linux

Обновлено: 04.07.2024

Среду для развертывания проектов php в Linux можно разделить на два типа: один с использованием Apache, php, установка сжатого пакета mysql, а другой с использованием команды yum для установки.

Для установки с использованием сжатых пакетов трех видов программного обеспечения вам необходимо вручную настроить отношения между ними. Конфигурация между apache и php не сложна, но при настройке с помощью mysql вам необходимо понимать php.

Далее следует использовать yum для настройки среды PHP в Linux:

Установите MySql

1. Лучше всего сначала установить mysql и apache, потому что вам нужно настроить и протестировать mysql и apache при настройке php

Сначала загрузите файл mysql-sever, поскольку среда linux блоггера является версией CentOS, а файл mysql-sever не появляется в исходном коде yum, когда mysql обычно установлен.

2. Установите MySQL

3. Запустите службу mysql после установки

4. Первоначальная установка mysql не имеет пароля, а имя пользователя по умолчанию является root. Поэтому нам нужно изменить пароль, используйте командную строку mysql для изменения

5. Поскольку блоггеры используют локальное программное обеспечение navicat для подключения к mysql под linux, поэтому, если вы хотите получить локальный доступ, вам нужно изменить таблицу пользователей в базе данных mysql.

Вы можете изменить часть данных или добавить часть данных. Но лучше не изменять данные, отмеченные синим цветом выше, измененный оператор имеет формат ниже

4. Наконец, exit или \ q - это методы для выхода из командной строки mysql.

Установите Apache

1. Метод установки Apache относительно прост


Как показано справа:


Как показано справа:

4. На этом этапе вы можете получить доступ к вашему серверу, ввести локальный хост или IP-адрес, и появится тестовая страница тестовой страницы Apache на основе centos

Установить PHP

Команда установки 1.php

3. После перезапуска мы проверим информацию, связанную с PHP, создадим новый интерфейс PHP для тестирования.

Самым главным преимуществом PHP для системного администрирования является его кроссплатформенность. В отличие от таких традиционных инстументов, как bash для Linux или bat-файлы и скрипты Visual Basic для Windows, PHP скрипты легко переносятся из одной операционной системы в другую. Все, что необходимо это совместимость с интерпретатором PHP и установка необходимых модулей.

Как установить PHP на Linux и Windows

Если на веб сервере присутствует PHP как язык веб-сценариев, значит возможности командной строки также присутствует. И этого достаточно, чтобы использовать PHP, как инструмент системного администрирования.

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

Установка PHP на Linux

Не вдаваясь в специфические для дистрибутива особенности управления пакетами, единственный модуль, который необходимо установить напрямую, - это php-cli. "Cli” означает “Command Line Interface” и переводится как "Интерфейс командной строки".

Установка php-cli настроит все необходимые зависимости для PHP, включая сам движок PHP.


Установка PHP на Windows

Как правило, PHP не входит в стандартный набор Windows, даже если установлен IIS. Весь пакет PHP необходимо вручную загрузить и скопировать в отдельный каталог, например в корень системного диска c:\php.

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

Основы и примеры программирования на PHP

Рассмотрим следующий код:

Обратите внимание, строки вывода заканчиваются специальной последовательностью /n, обеспечивающая перевод на новую строку. Данный код выполнят последовательный перебор всех параметров командной строки. Синтаксис запуска скрипта выглядит следующим образом:

В целом, выполнение скриптов PHP не отличаются от веб сценариев. И в том и другом случае имеются входные параметры. Для HTML это данные, получаемые с помощью методов GET и POST, а для командной строки это переменные $argc и $argv, суть которых это количество аргументов, включая имя самого скрипта, и их значения соответственно.

Следует отметить, что хорошим тоном считается проверять установлено ли значение для переменных $_GET, $_POST, $argc или $argv и определить перед чтением. В особенности, если один и тот же скрипт будет использоваться как в web среде, так и в командной строке.

Как создать резервную копию баз данных MySQL с помощью PHP

Преимущество от применения PHP в рамках системного администрирования заключается в том, что можно использовать все расширяемые функции, которые предлагает PHP и которые могут быть недоступны в других средах. Например, единственный способ взаимодействия с базой данной MySQL для оболочки bash или батника Windows является использование конвейерные и промежуточные файлы для передачи SQL запросов в командную строку MySQL. Затем результаты должны быть перенаправлены в промежуточный файл и проанализированы скриптом. Это примерно так же, как использовать гаечный ключ в качестве молотка. PHP представляет широкий выбор надежных инструментов для работы с различными базами данных и другими технологиями.

Рассматриваемый ниже сценарий включает резервное копирование всех несистемных баз данных MySQL в файлы дампа SQL, а затем их сжатие. Эти файлы хранятся только в течение 2 недель, и каждый файл удаляется по истечении срока. PHP предоставляет встроенную поддержку для всех этих вещей.

Рассмотрим приведенный ниже код, показывающий, как работать с базами данных MySQL на PHP:

Используя сравнительно простые команды PHP, можно генерировать имена файлов с временными метками и производить сжатие полученных файлов. Этот пример выполняется на Linux и предполагается, что домашним каталогом является /home/dba. Однако, данный код можно легко адаптировать к выполнению на Windows, поскольку синтаксис MySQL такой же, а bzip2 заменить на инструмент сжатия подходящий для Windows.

Данный пример кода на PHP генерирует вот такой вывод:

Примечание: ↩︎ указывает, что команда продолжается в текущей строке, но перенесена удобства отображения.

В целом, рекомендуется использовать полный путь к каждой внешней команде, которая будет выполняться. Причина в том, что если этот код выполняется в crontab Linux или в качестве запланированной задачи Windows, то путь к системному файлу может быть не доступен. Использование полного пути гарантирует отсутствие ошибок “команда не найдена”. Аналогичным образом, использование полного пути к целевому каталогу в самих командах гарантирует, что созданные файлы будут сохранены в нужных каталогах.

В завершении добавляем функционал удаления старых файлов резервных копий, как показано ниже:

Представленный код не является чем то особенным с точки зрения возможностей PHP. Этот листинг является адаптацией давно существующей функциональности PHP.

Один из бонусов команды print в данном коде это то, что если код выполняется в crontab и установлен параметр MAILTO, выходные данные будут отображаться в электронных письмах, сгенерированных crontab.

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

Этот простой пример существующего процесса резервного копирования базы данных и очистки от старых копий, который выполняется с помощью PHP, является верхушкой айсберга того, что PHP может сделать для системного администратора. Дополнительным преимуществом использования PHP является то, что администратору, свободно владеющим PHP, не нужно изучать разные скриптовые языки программирования для конкретных операционных систем. Использование скриптовых языков также осложняет перенос кода между командной строкой и web-среды.

Настроить рабочее окружение для разработки на PHP в Linux возможно несколькими способами. Рассмотрим один из наиболее быстрых способов: настройка связки PHP плюс nginx.

Запустите приложение «Терминал». Ярлык на запуск доступен в менеджере приложений.

Установка PHP

Последним компонентом в настройке рабочего окружения станет PHP.

В окне терминала введите команду для установки php-fpm из репозитория.

Настройка xdebug

  1. Вводим команду редактирования файла:
  2. Добавляем в файл конфигурацию для xdebug.

Сохраняем изменения ctrl + o и закрываем редактор nano ctrl + x.

Некоторая информация в ней устарела, поэтому мы обновили статью — читайте новую версию.

Настройка окружения PHP-разработчика в macOS

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

Пакетный менеджер

Скачивать и устанавливать весь требуемый софт мы будем с помощью пакетного менеджера Homebrew.
Пакетный менеджер — это инструмент, который значительно облегчает процесс установки любых программ. С Homebrew установка программы на компьютер сводится буквально к одной команде в терминале.

Но сам Homebrew тоже требуется установить, так как по умолчанию он не входит в состав операционной системы.
Понятная инструкция по его установке есть на главной странице этой программы. Выполните её и переходите к следующему шагу.

Установка PHP

Начнём с установки PHP-интерпретатора.
Все последующие команды выполняются через терминал.
Установить интерпретатор можно через одну простую команду:

Проверим, что всё установилось корректно:

Установка веб-сервера

PHP — это язык программирования, на котором можно создавать современные сайты. Обработкой запросов пользователей и отдачей им запрошенных страниц занимаются специальные программы — веб-сервера.

PHP работает в тесной связке с веб-сервером, так как именно последний обращается к нему и, в конечном счёте запускает наши сценарии. В общем, без веб-сервера нам никак не обойтись.

Поднять веб-сервер можно с помощью плагинов для редактора или настроить веб-сервер самостоятельно. Рассмотрим оба варианта.

Использование веб-сервера из редактора

Современные редакторы могут самостоятельно запускать сервер. В VS Code это можно сделать через плагин PHP Server, а в PHP Storm через — PHP Debug Server. По ссылкам есть инструкция с настройками. Для того, чтобы сервер стартовал, нужно чтобы локально был установлен php интерпретатор.

Установка nginx

Рассмотрим как установить веб-сервер самостоятельно.

Установим последнюю версию nginx:

Запускаем nginx, чтобы он работал в фоне и обслуживал наши запросы:

Проверяем, что всё установилось корректно, и nginx успешно работает на нашем компьютере:
откройте любой браузер и введите в адресной строке следующий URL:

в ответ вы должны увидеть страницу с текстом «Welcome to nginx!»

Интеграция PHP и веб-сервера

На этом шаге мы «подружим» PHP-интерпретатор и nginx, чтобы при запросе веб-страниц с расширением.php автоматически выполнялся php-сценарий и мы видели результат его работы в браузере.

Откройте конфигурационный файл nginx:

(*) nano — консольный текстовый редактор для Unix и Unix-подобных ОС. Вместо него файлы можно открывать в других редакторах, заменив на nano на phpstorm , code (нужно установить поддержку команды через редактор) для VS Code или другие.

USERNAME нужно будет в двух местах заменить на имя вашего пользователя

Здесь мы говорим серверу, чтобы он слушал 80 порт страницы localhost и при запросе показывал содержимое папки yeticave . После USERNAME вы можете выбрать путь до любой удобной для вас папки.

Разрешим nginx читать содержимое нашего проекта

(*)Поменяйте USER на имя вашего пользователя и yeticave на папку вашего проекта

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

Установка xdebug

Установить xdebug можно простой командой:

Проверка работы

Базовая настройка окружения закончена. Осталось проверить, что мы всё сделали правильно.
Создадим тестовый PHP-сценарий со следующим содержимым:

Установка MySQL в macOS

Актуальную версию MySQL для macOS можно загрузить с официальной страницы. Для удобства установки рекомендуется загружать DMG Archive. В этом случае процесс установки будет выполняться с помощью стандартного инсталлятора.

Окно инсталлятора

Рисунок 1. Окно инсталлятора

Нажимаем Continue пока не дойдём до шага Installation Type . На этом шаге необходимо проверить перечень компонентов для установки. Нажимаем кнопку Customize . Отмечаем все флаги как на рисунке 2.

 Выбор компонент для установки

Рисунок 2. Выбор компонент для установки

Нажимаем Install . После установки отобразится всплывающее окно с автоматически сгенерированным паролем для пользователя root. Обязательно его запомните. Пример окна с автоматически сгенерированным паролем приведён на рисунке 3. Далее нажимаете кнопку Finish . На этом установка MySQL завершена.

Автоматически сформированный пароль

Рисунок 3. Автоматически сформированный пароль

Сразу после установки служба MySQL не будет запущена. Запуск необходимо выполнить вручную. Проще всего это сделать через аплет System Preferences . Открываем и запускаем аплет для управления MySQL (рисунок 4). В появившемся окне нажимаем кнопку Start MySQL Server .

Рисунок 4. Окно System Preferences Рисунок 5. Аплет запуска MySQL

Чтобы протестировать соединение с MySQL и получить возможность выполнять базовые задачи, вам потребуется фирменная утилита от Oracle — MySQL Workbench. Установка утилиты выполняется стандартным для macOS способом: запускаем загруженный DMG и в окне инсталлятора перетаскиваем иконку MySQL Workbench в папку Application.

Для тестирования корректности установки MySQL запустим MySQL Workbench и попробуем установить соединение.

Главное окно MySQL Workbench

Рисунок 6. Главное окно MySQL Workbench

В главном окне MySQL Workbench, в разделе MySQL Connections кликаем по автоматически подготовленному профилю Local instance . Появится окно ввода пароля. Вводите пароль, который вы сохранили на этапе установки. Если пароль верный, то появится окно с предложением указать текущий пароль и установить новый. Выполните это действие и нажмите Ok . В случае установки соединения вы увидите окно как на рисунке.

Соединение с MySQL установлено

Рисунок 7. Соединение с MySQL установлено

Этичный хакинг и тестирование на проникновение, информационная безопасность

Интерпретатор 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 получить данные от пользователя в консоли

Благодаря передаваемым аргументам, скрипт может выполнять действия не только с прописанными в нём данными, но и с другими значениями, указанными при запуске скрипта.

Во время работы скрипта может потребоваться ввод новых данных, в консоли это достигается с помощью строки запроса, в которую пользователь может ввести значение и нажать 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 со следующим содержимым:


В самом браузере:


Получение справки в командной строке

Для получения справки о функциях PHP прямо в командной строке используется опция --rf.

Ну как-то так… а чего вы хотели — это же консоль.

Насколько я понял, в строке Parameters в фигурных скобках пишется количество аргументов функции, строка required означает, что аргумент обязательный, а строка optional — что аргумент опциональный. О функции аргументов иногда можно догадаться по их имени, например, $filename. Информации о том, какое действие выполняет функция, видимо, нет.

Опции для разработчика

Если вы действительно пишите и отлаживаете код, в том числе для веб-сайтов, то вам пригодятся следующие опции:

Вывод информации о PHP

Для показа информации о PHP имеются следующие три опции:

Опция -i — это эквивалент phpinfo, но для консоли.

PHP не может сохранить файл даже если достаточно прав на запись

На самом деле это может случиться не только при запуске PHP скриптов из командной строки, но и при работе скрипта на веб-сервере. Но при запуске в консоли больше условий для получения этой проблемы: PHP скрипт не сохраняет файл в папку, на которую установлены права на запись для кого угодно (777).

Такое поведение может выглядеть необъяснимым, если вы не знаете о директиве open_basedir в главном конфигурационном файле php.ini. Данная директива ограничивает все файловые операции теми папками, которые указаны с ней. Пример:

Причём если директива 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 скрипты, предназначенные для запуска в командной строке с аргументами.

Читайте также: