Как запустить php сайт на компьютере

Обновлено: 03.07.2024

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

Сначала небольшое вступление. Замечу что, в свое время, отсутствие простой и понятной новичкам информации, по казалось бы элементарным вещам, частенько ставило меня в тупик, будь то изучение языков программирования или администрирование серверов. Дам простой совет, никогда не начинайте изучать детали, пока не уложили в голове общую картину предмета. Например, не старайтесь изучить особенности поведения какого нибудь тега в HTML, пока не уясните что такое "HTML" в принципе (теперь без запинки произнесите расшифровку аббревиатуры и вдумайтесь в каждое слово).

И так, что такое web-server. В общем все просто, это может быть обычный компьютер, имеющий сетевую карту и подключенный к сети интернет. Единственное отличие "сервера" от вашего компьютера (уверен он у вас подключен к интернету), это то что на этом компьютере установлена специальная программа, которая посылает ответы всем другим компьютерам "клиентам", каждый раз когда клиенты запрашивают с него данные специальным образом.

Что значить "запросить данные" = "запрос". Рассмотрим на примере работы одного из сайтов, например, "ya.ru". Для начала разберемся что физически представляет из себя этот "ya.ru". Для начала запустим командную строку - пуск - выполнить - "cmd" и пропингуем сайт (ввести "ping ya.ru"), на что мы получим ответ от одного из серверов Яндекс вида:

Ясно что в каком-то населенном пункте (который, к слову, можно выяснить по IP через какой-нибудь открытый сервис), стоит абсолютно материальная машина, имеющая как минимум одну сетевую карту, карта имеет IP-адрес 213.180.204.3. С нашего компьютера был послан "запрос" программой "ping.exe" к этому серверу, через 71 миллисекунду программа ping получила ответ от сервера Яндекс, о чем и сообщила нам на экране.

Разбираемся с аббревиатурой HTTP - HyperText Transfer Protocol — «протокол передачи гипертекста». "Протокол" - некий общепринятый механизм передачи данных, который, как и все другие протоколы, к тому же зафиксирован документально. Читать пока не обязательно, да и в будущем вряд ли понадобится полное описание спецификации, скорей всего какого-нибудь FAQ будет достаточно. Главное уяснить себе, что когда то, несколько лет назад, группа людей (весьма продвинутых в компьютерах и сетях) решила что неплохо было бы всем компьютерам в сети обмениваться информацией по единому стандарту, что облегчит жизнь и разработчикам сайтов и пользователям. Решили что обмен этот будет идти по принципу клиент-сервер, "клиент" (ПК пользователя) создает текстовый "запрос" и направляет его на определенный порт "сервера", назад клиент получает "ответ" в виде текста.


Если вы только знакомитесь с принципами работы WEB, то у вас может возникнуть вопрос, как полученные кракозябры в telnet связан с сайтом который мы видим в браузере. Все очень просто, это "внутренность" главной страницы ya.ru, которую браузер представляет нам уже во вполне понятном виде. Убедимся в этом - откроем в браузере сайт ya.ru - правой - "исходный код страницы" - видим что это действительно так:

Теперь мы имеем представление о работе механизма клиент-сервер по протоколу HTTP и подошли вплотную к нашей цели. Наш компьютер должен уметь отвечать на запросы, которые шлют ему клиенты по сети, по протоколу HTTP, на порт 80. Для этого необходимо установить на нашем ПК программу, которая умеет это делать, мы будем ставить программу (она же web-сервер) "Apache". Замечу что это не единственный веб-сервер, есть поклонники windows IIS или nginx и т.п.

Краткое описание компонент

Для простого сайта без авторизации, достаточно поставить только Apache, если же надо реализовать авторизацию - без PHP уже не обойтись. Установку производим в обратном порядке - MySQL, затем PHP, затем Apache, затем запускаем web-server, делаем тестовую страничку и проверяем работу сервера "извне".

Установка MySQL

  1. Приступаем к установке. Нажмите в данном окне выборочную установку компонентов "Custom".
  2. Здесь вы можете выбрать дополнительные компоненты и сменить установочную директорию программы.
  3. Теперь приступим к настройке MySQL сервера.
  4. Выбираем детализированную настройку - "Detailed Configuration".
  5. Отмечаем пункт "Developer Machine".
  6. Выбрав пункт "Multifunctional Database", вы сможете работать как с таблицами типа InnoDB (с возможностью использования транзакций), так и с высокоскоростной MyISAM (как правило для веб-разработок используется именно этот тип таблиц).
  7. Выбор диска и директории для хранения таблиц типа InnoDB.
  8. В данном диалоговом окне выбирается максимально возможное количество подключений к серверу MySQL. При выборе "Decision Support (DSS)/OLAP", максимальное количество подключений будет ограничено двадцатью, чего более чем достаточно при установке сервера на домашнем компьютере и отсутствии большого количества одновременных подключений.
  9. Отметив "Enable TCP/IP Networking" мы включаем поддержку TCP/IP соединений и выбираем порт, через который они будут осуществляться. Стандартным для сервера MySQL является порт 3306. Отметив "Enable Strict Mode", мы задаем режим строгого соответствия стандарту SQL (данную опцию рекомендуется оставлять включенной).
  10. Обратите внимание на выставление настроек данного окна. Отметив "Manual Selected Default Character Set / Collation" и выбрав из ниспадающего меню "cp1251" определяем, что изначально для таблиц будет использоваться кодировка Cyrillic Windows (cp1251), что означает корректную работу с русским языком в данной кодировке.
  11. Если отметить "Install As Windows Service", сервер будет запускаться в виде сервиса, что является рекомендуемым способом запуска. Ниже, в ниспадающем списке, задается имя сервиса. Далее, уберите галочку рядом с "Launch the MySQL Server automatically" - мы будем запускать сервер вручную. Также поставьте галочку рядом с "Include Bin Directory in Windows PATH" - это позволит установить видимость директории "bin", для командной строки.
  12. Установите пароль пользователя "root". Советую сделать это. Поставьте хотя бы какой-нибудь простенький пароль, только не оставляйте поле пустым, это убережёт вас от возможных неприятностей в дальнейшем.
  13. В данном окне обратите внимание на строку "Write configuration file", которая указывает на месторасположение конфигурационного файла MySQL - "my.ini", далее, его необходимо будет немного отредактировать.
  14. Откройте для редактирования файл "my.ini".
    1. В раздел [client], после строки:
      port=3306
      Добавьте строку определяющую каталог содержащий файлы описания кодировок:
      character-sets-dir="C:/Program Files/MySQL/MySQL Server 5.5/share/charsets"
    2. В раздел [mysqld], после строки:
      port=3306
      Добавьте следующие две строки, первая из которых вам уже известна, вторая – устанавливает кодировку в которой данные передаются MySQL:
      character-sets-dir="C:/Program Files/MySQL/MySQL Server 5.5/share/charsets"
      init-connect="SET NAMES cp1251"
    3. Далее, найдите строку:
      default-storage-engine=INNODB
      Замените изначально устанавливаемый тип таблиц на MYISAM:
      default-storage-engine=MYISAM

    Установка PHP

        , обратите внимание что нам нужен 'VC9 x86 Thread Safe' вариант.

        Распакуйте архив в желаемый каталог (изначально предлагается "C:\php"). Откройте конфигурационный файл содержащий рекомендуемые настройки - "php.ini-development" (находящийся в корне дистрибутива), переименуйте его в php.ini и произведите следующие изменения.

      1. Найдите строку:
        post_max_size = 8M
        Увеличьте до 16 Мбайт максимальный размер данных принимаемых методом POST, изменив ее на:
        post_max_size = 16M
      2. Найдите строку:
        ;include_path = ".;c:\php\includes"
        Раскомментируйте ее, убрав перед строкой символ точки с запятой.
        (Внимание исключение! Обратные косые черты при указании пути):
        include_path = ".;c:\php\includes"
        Создайте пустой каталог "C:\php\includes", для хранения подключаемых классов.
      3. Найдите строку:
        extension_dir = "./"
        Установите значением данной директивы путь к папке с расширениями:
        extension_dir = "C:/php/ext"
      4. Найдите строку:
        ;upload_tmp_dir =
        Раскомментируйте ее и укажите в значении следующий путь:
        upload_tmp_dir = "C:/php/upload"
        Создайте пустую папку "C:\php\upload", для хранения временных файлов загружаемых через HTTP.
      5. Найдите строку:
        upload_max_filesize = 2M
        Увеличьте максимально допустимый размер загружаемых файлов до 16 Мбайт:
        upload_max_filesize = 16M
      6. Подключите, расскомментировав, данные библиотеки расширений:
        extension=php_bz2.dll
        extension=php_curl.dll
        extension=php_gd2.dll
        extension=php_mbstring.dll
        extension=php_mysql.dll
        extension=php_mysqli.dll
      7. Найдите строку:
        ;date.timezone =
        Раскомментируйте и установите значением часовой пояс вашего местоположения (список часовых поясов можно найти в документации):
        date.timezone = "Europe/Moscow"
      8. Найдите строку:
        ;session.save_path = "/tmp"
        Раскомментируйте и установите значением данной директивы такой путь:
        session.save_path = "C:/php/tmp"
        Создайте пустую папку "C:\php\tmp" для хранения временных файлов сессий.
      9. Сохраните изменения и закройте файл php.ini.

      php_bz2.dll – С помощью данного расширения PHP сможет создавать и распаковывать архивы в формате bzip2.

      php_curl.dll – Очень важная и нужная библиотека, позволяющая соединяться и работать с серверами, с помощью огромного количества интернет-протоколов.

      php_gd2.dll – Ещё одна незаменимая библиотека, позволяющая работать с графикой. Вы думали на PHP можно только HTML странички генерировать? А вот и нет! С помощью PHP можно почти всё, в том числе и рисовать.

      php_mbstring.dll – Библиотека содержит функции для работы с много-байтными кодировками, к которым относятся кодировки восточных языков (японский, китайский, корейский), Юникод (UTF-8) и другие.

      php_mysql.dll – Имя библиотеки говорит само за себя - она необходима для работы с сервером MySQL.

      php_mysqli.dll – Данная библиотека является расширением предыдущей и содержит дополнительные функции PHP для работы с сервером MySQL версии 4.1.3 и выше.

      Установка Apache

      1. Существующие блоки примеров виртуальных хостов необходимо удалить, и вставить только нижеследующее:
        <VirtualHost *:80>
        DocumentRoot "C:/apache/localhost/www"
        ServerName localhost
        ErrorLog "C:/apache/localhost/error.log"
        CustomLog "C:/apache/localhost/access.log" common
        </VirtualHost>
      2. Сохраните изменения и закройте файл "httpd-vhosts.conf"

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


      Сохраните и закройте файл, затем смените ему расширение, чтобы получилось 'index.html'.

      Результат работы Apache

      Пришло время проверить работоспособность нашего web-сервера. Заходим в браузер и делаем HTTP запрос на свой ПК, а именно, в поле "адрес" пишем вместо названия сайта свой локальный IP адрес (например у вас он может быть 192.168.0.1), а можно просто написать "localhost".

      Наш web-сервер ответил на запрос и выдал нам нашу первую страничку.

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

      Для проверки php необходимо сделать следующее:

      Результат работы Apache

      1. Во первых удалите index.html, вместо него создайте текстовый файл index.txt следующего содержания:
      2. Переименуйте index.txt в index.php (обратите внимание на расширение!).
      3. Проверьте страничку запросив ее с сервера по адресу localhost.

      Дополнительные настройки

      Создание структуры каталогов виртуальных хостов

      В корне диска необходимо создать каталог "apache" - в нем будут лежать ваши виртуальные хосты (домены), глобальный файл журнала ошибок "error.log" (создается программой при первом запуске, автоматически), глобальный файл доступа "access.log" (создается автоматически). В каталоге "apache" создаем еще одну пустую папку - "localhost", в которой, в свою очередь, создаем папку "www", именно в последней и надо будет держать наше добро в виде локальных скриптов. Такая, казалось бы странная структура каталогов, продиктована схожей схемой построения каталогов в системах Unix, и призвана упростить в дальнейшем ее понимание и использование.

      Пример создания виртуального хоста
      При необходимости установки собственных виртуальных хостов сделайте следующее:

      Затем в каталоге "apache", создайте папку "test.ru" (прямо так, с точкой), в которой, в свою очередь, создайте папку "www".

      Теперь запустите сервер Apache выполнив в командной строке "C:\Apache2\bin\httpd.exe -k start", откройте браузер, введите в адресной строке "test.ru" или "www.test.ru" и вы окажетесь в своем виртуальном хосте. Только будьте внимательны, теперь вы сможете попасть на оригинальный сайт с именем виртуального хоста ("www.test.ru", если таковой существует), только закомментировав либо удалив строку: "127.0.0.1 www.test.ru", в вышеупомянутом файле "hosts".

      Остановить работу Apache можно выполнив в командной строке "C:\Apache2\bin\httpd.exe -k stop". При необходимости перезагрузить Apache, выполните в командной строке "C:\Apache2\bin\httpd.exe -k restart".

      Согласитесь, что вручную редактировать файл "hosts" при каждом запуске сервисов – это не удобно, поэтому для более удобного, одновременного запуска сервисов Apache, MySQL, и изменения файла "hosts" мы создадим два пакетных файла: на запуск и остановку, которые будут выполнять всю рутинную работу автоматически.

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

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

      Для запуска PHP локально на вашем компьютере необходима программа-сервер. Для windows лучший вариант - OpenServer, для linux - LAMP, для macos - MAMP.

      Установка такого сервера займет некоторое время. Чтобы не останавливаться в обучении, выполняйте пока PHP код в онлайн редакторе, например, в этом.

      Как выполнить PHP

      Пусть у вас уже есть установленный PHP сервер. В нем ваши программы будут располагаться в файлах с расширением php . Эти файлы на самом деле представляют собой обычные HTML файлы, в которых мы можем писать HTML код наших страниц, вот так:

      <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Моя первая программа</title> </head> <body> моя первая программа </body> </html>

      В этих файлах прямо внутри HTML кода мы можем писать PHP код. Он пишется в специальных скобках <?php и ?> . Давайте сделаем это:

      <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Моя первая программа</title> </head> <body> <?php echo 'моя первая программа'; ?> </body> </html>

      Если запустить этот файл через PHP сервер, то сервер выполнит команды PHP и результат отправит в браузер. Команда echo , которую вы там можете увидеть, просто выполняет вывод заданной строки. В результате в браузер улетит только HTML код, а вместо PHP кода будет стоять результат его выполнения.

      Упрощение

      Для простоты на этапе обучения лишние теги можно не писать:

      Проблема с кодировками

      Чтобы русский текст выводился корректно, необходимо выполнение нескольких условий. Во-первых, кодировка самого файла должна быть utf-8 . Во-вторых, нужно указать кодировку в HTML коде:

      Иногда описанные процедуры не помогают и тогда может помочь команда mb_internal_encoding :

      <meta charset="utf-8"> <?php mb_internal_encoding('UTF-8'); echo 'моя первая программа'; ?>

      Вывод ошибок PHP

      Если вы допустите в вашем PHP коде ошибку, то сервер выведет описание этой ошибки прямо в браузер. Ошибки бывают трех типов: notice , warning и fatal .

      Нотисы представляют собой замечания о том, что у вас в коде может что-то быть не так. Хотя код по-прежнему будет работать. Лучше, однако, эти ошибки не оставлять без внимания, а исправлять их.

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

      Фаталы возникают в том случае, когда PHP код не может быть выполнен. Как правило это будет связано с допущенной вами синтаксической ошибкой.

      Есть, однако, проблема. По умолчанию нотисы и ворнинги выключены, а вместо фаталов вы будете видеть просто белый экран. Это, конечно же, малоинформативно. Давайте включим вывод всех ошибок:

      Иногда, однако, данная команда не сработает (зависит от настроек сервера). На помощь придет вторая команда:

      Лучше сразу писать две:

      На выложенном в интернет сайте вывод ошибок лучше отключать. Делается это вот так:

      Полный код для запуска PHP

      В соответствии с описанным полный код для запуска PHP скриптов будет выглядеть так:

      <meta charset="utf-8"> <?php error_reporting(E_ALL); ini_set('display_errors', 'on'); mb_internal_encoding('UTF-8'); echo 'моя первая программа'; ?>

      Улучшим код для запуска

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

      Давайте его доработаем. Для этого сделаем два файла. Пусть первый файл будет index.php и именно его вы будете запускать в браузере:

      <meta charset="utf-8"> <?php error_reporting(E_ALL); ini_set('display_errors', 'on'); mb_internal_encoding('UTF-8'); include 'code.php'; ?>

      Обратите внимание на команду include , написанную в первом файле. Эта команда будет автоматически подключать код второго файла к первому. И все команды первого файла автоматически применятся к подключенному коду второго файла.

      А второй файл будет называться code.php . В нем вы просто будете писать PHP код и именно этот файл вы будете присылать на проверку:

      Далее в учебнике во всех примерах кода я буду для простоты опускать лишние команды.


      PHP (от англ. препроцессор гипертекста) – язык программирования общего назначения, широко используемый в веб-разработке. Сценарии PHP можно внедрять непосредственно в код HTML. В этой статье мы пройдемся по основам программирования на PHP: синтаксису, объявлению переменных, массивам, условным операторам, циклам и функциям. Также запустим двумя способами веб-сервер на локальной машине и соберем страничку из нескольких файлов PHP и фреймворка Bootstrap. В конце статьи приведем список литературы и бесплатные курсы по PHP для новичков.

      Редакторы кода

      Для удобного кодинга нам понадобится редактор кода (IDE). Популярные:

        (платный, пробная версия на 30 дней); (бесплатно); (бесплатно); (бесплатно).

      Как запустить PHP в Atom

      Устанавливать PHP на компьютер и запускать веб-сервер мы будем в конце статьи в разделе «Собираем HTML-страницу». А пока для запуска PHP-сценариев достаточно добавить плагин Script в редакторе Atom.

      Как установить Atom в Ubuntu и Windows читайте в нашем самоучителе по Python.

      Чтобы запустить PHP-сценарий в Atom перейдем в закладку Packages → Script → Run Script , либо нажмем на клавиши Ctrl + Shift + B (рис. 1).

      Рис. 1. Запуск php-скрипта в редакторе Atom

      Рис. 1. Запуск php-скрипта в редакторе Atom

      1. Синтаксис

      Код в PHP заключается в открывающий <?php и закрывающий ?> теги. Согласно стандарту кодирования PSR-12, закрывающий тег должен быть опущен в файлах, содержащих только код PHP . В конце строки ставят разделитель строк – точку с запятой ; . Если забыть поставить разделитель, то следующая строка кода соединится с предыдущей и интерпретатор PHP выдаст ошибку.

      Выведем на экран строку Hello World (заключена в кавычки) с помощью команды echo :

      через функцию print :

      через функцию printf (выводит отформатированную строку):

      или через функцию print_r() , выводящую информацию в удобочитаемом виде:

      Чтобы перенести строку используем символ \n , который работает только в двойных кавычках:

      2. Объявление переменной

      PHP – язык со слабой типизацией, то есть перед объявлением переменной не нужно задавать ее тип. Чтобы объявить переменную, перед ее именем ставят знак доллара $ :

      переменной animal присвоили значение Сat .

      Выведем на экран переменную animal :

      Одно значение можно присвоить нескольким переменным:

      Комментарии

      3. Типы данных

      3.1. Строки

      Строка – набор символов, заключенный в одиночные '' или двойные кавычки "" :

      Конкатенация строк

      Оператор конкатенации точка . соединяет левый и правый аргументы:

      Оператор присваивания с конкатенацией .= присоединяет правый аргумент к левому:

      Чтобы перенести слово на новую строку воспользуемся символом переноса \n , который работает только в двойных кавычках:

      3.2. Числа

      Целое число (integer) не имеет дробной части:

      Число с плавающей точкой

      Число с плавающей точкой имеет дробную часть и задается следующий образом:

      Чтобы узнать тип переменной воспользуемся функцией gettype() , а для преобразования числа с плавающей точкой в целое число функцией intval() :

      Арифметические операторы

      Оператор Операция
      + Сложение
      - Вычитание
      * Умножение
      / Деление
      % Деление по модулю
      ** Возведение в степень

      Таблица 1. Арифметические операторы

      Мы можем сложить два числа через запись $number_one = $number_one + $number_two; или через сокращенную запись $number_one += $number_two; :

      Операторы сравнения

      Чтобы сравнить значения используют операторы сравнения, которые возвращают true или false :

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

      Оператор Значение
      $n == $m True, если $n равно $m
      $n === $m True, если $n равно $m и имеют одинаковые типы
      $n! = $m True, если $n не равна $m
      $n <> $m True, если $n не равна $m
      $n !== $m True, если отличаются тип или значение переменных
      $n < $m True, если $n меньше $m
      $n > $m True, если $n больше $m
      $n <= $m True, если $n меньше или равна $m
      $n >= $m True, если $n больше или равна $m
      $n <=> $m Возвращает -1, если $n меньше $m, 0 в случае равенства и 1, если $n больше $m

      Таблица 2. Операторы сравнения

      Порядок операций

      Сначала считается выражение в скобках:

      4. Условный оператор if-else

      Рис. 2. Условный оператор if в PHP

      Рис. 2. Условный оператор if в PHP

      Оператор if выполняет код, если выполняется условие. В противном случае выполняется код после else, который переводится, как «иначе», «в другом случае».

      Синтаксис оператора if-else

      Напишем несколько условий с оператором if и if-else :

      для проверки дополнительных условий используется оператор elseif :

      && – логический оператор И . В нашем условии проверяемое число должно быть больше четырех и меньше десяти.

      Оператор Значение Результат
      $n and $m И true, если и $n, и $m true
      $n or $m Или true, если или $n, или $m true
      $n xor $m Исключающее Или true, если $n, или $m true
      ! $n Отрицание true, если $n не true
      $n && $m И true, если и $n, и $m true
      $n || $m Или true, если или $n, или $m true

      Таблица 3. Логические операторы

      5. Тернарный оператор

      Тернарный оператор сокращает запись проверяемого условия и имеет следующий синтаксис:

      Проверим, переменная n больше 10 или нет. Если значение n больше 10 , уменьшим значение n на единицу (декремент). В противном случае увеличим на единицу (инкремент).

      6. Переключатель switch

      Переключатель switch проводит нестрогое сравнение == значений и передает управление соответствующему оператору case . Если значение не совпадает со значением из case , тогда выполняется переход к оператору default .

      Синтаксис переключателя switch

      Напишем конструкцию из переключателя switch и двух операторов case :

      7. Цикл while

      Рис. 3. Цикл while в PHP

      Рис. 3. Цикл while в PHP

      Оператор while выполняет код до тех пор, пока значение условия не станет ложным.

      Синтаксис цикла while

      Выведем на экран пять раз слово Hello .

      Расшифровка :

      while – обозначение цикла.

      $m = 0 – начальное значение переменной m .

      $m < 5 – условие, которое проверяется перед началом цикла.

      $m++ – инкрементирование, то есть увеличение переменной на единицу.

      echo "Hello\n" – вывод на экран слово Hello каждый раз с новой строки \n .

      Другой способ записи с помощью декремента в условии:

      $m-- – декрементация, то есть уменьшение значения переменной на единицу. В это примере знак декремента -- стоит после переменной, поэтому мы получим четыре итерации (от 4 до 0).

      Если поставить оператор декремента перед переменной --$m , то мы получим три итерации (от 4 до 1):

      8. Цикл do..while

      Цикл do..while выполняется минимум один раз, так как условие выполнения цикла проверяется в конце итерации, а не в начале как в цикле while .

      Синтаксис цикла do..while

      Напишем цикл, выводящий на экран четыре раза слово Hello :

      9. Цикл for

      Рис. 4. Цикл for в PHP

      Рис. 4. Цикл for в PHP

      Когда нам известно количество итераций, вместо цикла while лучше использовать цикл for .

      1. Инициализирующее выражение выполняется один раз в начале цикла.
      2. Проверяется условие. Если оно истинно, то выполняется тело цикла. Если ложно, то выполнение цикла прерывается.
      3. В конце каждой итерации изменяется счетчик (увеличивается или уменьшается).

      Цикл выполняется, до тех пор, пока условие истинно, то есть значение i не станет равным 4:

      10. Цикл foreach

      Цикл foreach последовательно перебирает элементы массива.

      Синтаксис цикла foreach

      На каждой итерации переменной присваивается значение текущего элемента последовательности. Переберем все элементы массива и умножим каждый элемент на 3:

      11. Массивы

      Рис. 5. Индексы элементов в массиве PHP

      Рис. 5. Индексы элементов в массиве PHP

      Массивы – упорядоченная коллекция элементов с доступом по индексу или ключу. Индексный массив создается двумя способами:

      Через функцию array() :

      и через квадратные скобки []:

      echo $a[1] – вывести на экран второй элемент массива.

      Нумерация массива начинается с 0 . В нашем случаем элементу массива Cat соответствует порядковый номер 0 , Dog – 1 , 123 – 2 . Для обращения к элементу массива используется следующий синтаксис: $имя_массива[индекс_элемента] .

      Рекомендуется объявлять массив через квадратные скобки, так как эта запись компактнее.

      Создадим пустой массив:

      Добавим в него несколько элементов и выведем на экран его содержимое:

      Чтобы добавить новый элемент мы использовали запись $имя_массива[] = новый_элемент . Первый добавленный элемент получает индекс 0 . Индексы следующих элементов увеличиваются на 1 . Можно задать индекс самостоятельно. Для этого в квадратных скобках укажем нужный нам индекс:

      При добавлении непронумерованного элемента 5000 , значение его индекса будет на единицу большего максимального значения индекса в массиве – 101 :

      Для удаления элемента из массива воспользуемся функцией unset() :

      unset($array[2]) – удаление третьего элемента массива.

      В качестве индекса также используют строки:

      В таком случае мы получаем что-то напоминающее словари в других языках программирования с ключами и значениями. В PHP такой массив называют ассоциативным.

      Ассоциативный массив объявляется через символы => :

      Создадим ассоциативный массив:

      Для поиска ключа по значению используем функцию array_search():

      array_search('Cat' ,$array) – поиск ключа, соответствующего значению Cat в массиве array .

      Чтобы подсчитать количество элементов в массиве воспользуемся функцией count() :

      Также можно создать многомерный массив:

      'animals' => ['Cat', 'Dog'] – ключ animals с двумя значениями: Cat и Dog .

      'second_array' => [5000, 33, ['third_array' => ['Hello']]] – ключ second_array с тремя значениями: два числа 5000 , 33 и массив, но уже со своим ключем third_array и значением Hello .

      12. Функции

      Функция – подпрограмма, которая на входе принимает аргументы (бывают функции без входных аргументов), выполняет код и возвращает результат. Функциональное программирование упрощает жизнь программиста, так как не нужно копировать и вставлять фрагменты кода снова и снова. Достаточно обратиться к функции когда нужно и сколько угодно раз.

      Существуют встроенные и пользовательские функции. Встроенные функции – print() , print_r() и так далее – придумали разработчики. Пользовательские функции программисты пишут самостоятельно.

      Как объявить функцию

      function – мы говорим интерпретатору, что отсюда начинается функция.

      аргументФункции – переменные, которые передаются функции для выполнения кода.

      имяФункции – чтобы вызывать функцию, ей нужно присвоить имя.

      return – выдает результат работы функции.

      Напишем и вызовем функцию, выводящую на экран фразу Hello, World .

      Аргументы функций

      До этого мы рассматривали функции без аргументов – переменных, которые функция получает извне. Напишем функцию с аргументами, которая считает сумму трех чисел:

      $a , $b , $c – аргументы функции.

      13. Собираем HTML-страницу

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

      Запуск веб-сервера

      Веб-сервер можно запустить несколькими способами:

      1. Через встроенный в PHP веб-сервер.
      2. Через сторонние инструменты: XAMPP , Open Server,Winginx .

      Встроенный в PHP веб-сервер

      Инструкция для Windows:

      1. Скачаем с официального сайта PHP и распакуем содержимое архива на диск.
      2. Откроем консоль и перейдем в папку с PHP, используя команду cd , например, cd php7 .
      3. Создадим папку page командной mkdir page . В ней будут храниться файлы нашей странички.
      4. Введем в консоли php -S localhost:8000 -t P:\php7\page\ . Флаг -S означает, что мы запускаем сервер по адресу localhost на 8000 порту. Флаг -t указывает путь к корневой директории.

      Инструкция для Ubuntu:

      1. Установим PHP командой sudo apt install php libapache2-mod-php php-mysql .
      2. Создадим в домашней директории папку page .
      3. Введем в консоли php -S localhost:8000 -t /home/USERNAME/page .

      Рис. 6. Запуск встроенного в PHP веб-сервера

      Рис. 6. Запуск встроенного в PHP веб-сервера

      Если мы получили ошибку 404, значит сервер запущен.

      XAMPP

      Скачаем и установим XAMPP . В папке C:\xampp\htdocs\ создадим папку нашей странички page . Запустим веб-сервер Apache, кликнув по кнопке Start . Узнаем версию PHP, введя в консоли (Shell) команду php -v .

      Рис. 7. Запуск сервера с помощью XAMPP

      Рис. 7. Запуск сервера с помощью XAMPP

      Рис. 8. Запуск сервера с помощью XAMPP на Windows

      Рис. 8. Запуск сервера с помощью XAMPP на Windows

      14. Собираем страничку

      Теперь создадим несколько PHP-файлов, из которых соберем страничку. Перейдем в папку page и создадим четыре файла: index.php , header.php , body.php , footer.php .

      Структура простого HTML-документа выглядит следующим образом:

      Воспользуемся фреймворком Bootstrap, чтобы ускорить создание странички. Скачивать ничего не нужно, просто вставим ссылку на Bootstrap в тег <head> :

      Откроем файл header.php и вставим в него следующий код:

      в файл footer.php :

      в файл index.php :

      include – инструкция, которая подключает к PHP-сценарию другие сценарии. Также сценарии подключают с помощью инструкций require , include_once и require_once . Они отличаются по реакции на отсутствие подключаемого файла.

      Рис. 9. HTML-страница, собранная из php-файлов

      Рис. 9. HTML-страница, собранная из php-файлов

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