Устанавливаем на windows apache, mysql и php

Структура URL адресов в админке

Обычно URL адреса в админке формируются по одной из следующих схем:

И сразу рассмотрим простой пример:

Итак, мы видим, что модулем здесь является products, а действием, к примеру, add. Что теперь с этим делать?

Если вы знакомы с ООП и MVC, тогда модулем для вас будет название класса, а действием — метод этого класса, который нужно запустить. Если действие не указано, то принято запускать метод под названием index.

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

Перепишем пример, написанный нами в единой точке входа, под новую схему URL:

Итак, мы берём 1-ый фрагмент URL и проверяем, существует ли в папке pages файл с таким названием.

Т.е. при переходе на страницу /test/test2 скрипт проверит существование файла /pages/test.php. Если файл есть — PHP выполнит этот файл, в противном случае выполнится файл /pages/404.php.

Как видите, при таком подходе нам больше не нужно прописывать соответствие URL-адресов и PHP-файлов. PHP сам будет искать нужный файл в папке pages по первому фрагменту URL.

Теперь осталось только создать файл pages/products.php. Сделаем небольшую заготовку:

Вот так выглядит обработка действий. Мы смотрим на второй фрагмент URL и ищем обработчик этого действия. Для каждого действия (add, update, delete) нужно прописать отдельный блок elseif.

Внутри обработчика add мы смотрим на то, каким методом пришёл запрос, GET или POST. Если GET — отображаем форму, если POST — добавляем товар.

Если вам не нравится вложенная проверка метода, можно сделать иначе. В файле index.php сохраним метод в отдельную переменную:

products.php

Готово. Да, если вам не нравится, что в коде 2 раза встречается одно и то же действие, только с разными методами, можете использовать немного упрощённую схему URL-адресов из фреймворка Laravel:

Добавление префикса /admin/ в URL

Немного изменим код index.php:

Теперь при запросе страницы /admin/products PHP будет искать файл с названием не products.php, а admin_products.php.

Переименуйте файл и не забудьте заменить в нём все $segments на $segments, поскольку в $segments теперь лежит модуль, а в $segments действие.

Why using PHP Server Stacks?

If you are a budding developer, you don’t know how frustrating it is to install a Web Server. 

It does not end at web servers, developers also have to install PHP, MariaDB, and sometimes Pearl, Ruby and other programming languages.

You can download them separately, and then install them to a same directory. And then you have to activate each of them before running the local host.

Else, you can easily download a PHP server, that is already stacked with the PHP, a database, OS, and a web server. They are a one-click installer of various useful programs that a developer needs to create an environment for web app deployment.

However, there are various type of PHP servers, depending on the requirements of the developer.

Let’s look at them in detail.

LAMP Server

LAMP is an acronym for Linux, Apache, MySQL and PHP. If a developer wants to use Pearl instead of PHP, he can download the Pearl.

It is a group of open-source software downloaded and installed individually. LAMP is mainly associated with the developers who like to work on Linux.

Developers love the flexibility and creativity space that Linux offers. For beginners, the LAMP could be a little bit difficult. Various complicated settings could baffle a non-experienced person. But it is a popular stack for the past decade. 

LAMP combination is a widely used PHP server. There is a vast ecosystem of LAMP on the internet.

Linux is the OS for LAMP, but you can use alternative components for your needs. There is also WAMP, MAMP, and WIMP. A different set of tools for a different kind of need.

5.1 Строка запроса (Request-Line).

Строка запроса (Request-Line) начинается с лексемы метода, затем
следует запрашиваемый URI (Request-URI), версия протокола и CRLF.
Эти элементы разделяются SP. В строке запроса (Request-Line) не
допустимы CR и LF, исключение составляет конечная
последовательность CRLF.

          Request-Line   = Method SP Request-URI SP HTTP-Version CRLF

5.1.1 Метод (Method).

Лексема метода указывает метод, который нужно применить к ресурсу,
идентифицированному запрашиваемым URI (Request-URI). Метод
чувствителен к регистру.

          Method         = "OPTIONS"                ; 
                         | "GET"                    ; 
                         | "HEAD"                   ; 
                         | "POST"                   ; 
                         | "PUT"                    ; 
                         | "DELETE"                 ; 
                         | "TRACE"                  ; 
                         | extension-method

          extension-method = token

Список методов, применимых к ресурсу, может быть указан в поле
заголовка Allow (). Возврашаемый код состояния ответа
всегда сообщает клиенту, допустим ли метод для ресурса в настоящее
время, так как набор допустимых методов может изменяться
динамически. Серверам СЛЕДУЕТ возвратить код состояния 405 (Метод
не дозволен, Method Not Allowed), если метод известен серверу, но
не применим для запрошенного ресурса, и 501 (Не реализовано, Not
Implemented), если метод не распознан или не реализован сервером.
Список методов, известных серверу, может быть указан в поле
заголовка ответа Public ().

Методы GET и HEAD ДОЛЖНЫ поддерживаться всеми универсальными
(general-purpose) серверами. Остальные методы опциональны; однако,
если вышеупомянутые методы реализованы, то они ДОЛЖНЫ иметь
семантику, описанную в разделе 9.

5.1.2 Запрашиваемый URI (Request-URI).

Запрашиваемый URI (Request-URI) — это Единообразный Идентификатор
Ресурса (URL, ), который идентифицирует ресурс запроса.

          Request-URI    = "*" | absoluteURI | abs_path

Три опции для запрашиваемого URI (Request-URI) зависят от
характера запроса. Звездочка «*» означает, что запрос обращается
не к специфическому ресурсу, а к серверу непосредственно, и
допускается только в том случае, когда используемый метод не
обязательно обращается к ресурсу.
В качестве примера:

          OPTIONS * HTTP/1.1

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

Обратите
внимание, что прокси-сервер МОЖЕТ переслать запрос другому
прокси-серверу или непосредственно серверу, определенному
absoluteURI. Чтобы избежать зацикливания запроса прокси-сервер
ДОЛЖЕН быть способен распознавать все имена сервера, включая любые
псевдонимы, локальные разновидности, и числовые IP адреса.
Request-Line может быть, например, таким:

          GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

Чтобы обеспечить переход к absoluteURI во всех запросах в будущих
версиях HTTP, все HTTP/1.1 серверы ДОЛЖНЫ принимать absoluteURI
в запросах, хотя HTTP/1.1 клиенты будут генерировать их только в
запросах к прокси-серверам.

Наиболее общая форма Request-URI — та, которая используется для
идентификации ресурса на первоначальном сервере или шлюзе. В этом
случае абсолютный путь URI (смотрите , abs_path)
ДОЛЖЕН быть передан как Request-URI, а сетевое расположение URI
(net_loc) ДОЛЖНО быть передано в поле заголовка Host. Для
последнего примера клиент, желающий получить ресурс
непосредственно с первоначального сервера должен создать TCP
соединение на 80 порт хоста «www.w3.org» и послать строки:

          GET /pub/WWW/TheProject.html HTTP/1.1
          Host: www.w3.org

Если прокси-сервер получает запрос без пути в Request-URI, и метод
запроса допускает форму запроса «*», то последний прокси-сервер в
цепочке запросов ДОЛЖЕН передать запрос, в котором Request-URI
равен «*». Например запрос

          OPTIONS http://www.ics.uci.edu:8001 HTTP/1.1
          OPTIONS * HTTP/1.1
          Host: www.ics.uci.edu:8001

Request-URI передается в формате, определенном в .
Первоначальный сервер ДОЛЖЕН декодировать Request-URI, чтобы
правильно интерпретировать запрос. Серверам СЛЕДУЕТ отвечать на
недопустимые Request-URI соответствующим кодом состояния.

В запросах, которые передаются далее, прокси-сервера никогда НЕ
ДОЛЖНЫ перезаписывать часть «abs_path» запрашиваемого URI
(Request-URI), за исключением случая, отмеченного выше, когда
пустой abs_path заменяется на «*», независимо от внутренней
реализации прокси-сервера.

Обратите внимание: правило «ничто не перезаписывать»
предохраняет прокси-сервера от изменения значения запроса,
в котором первоначальный сервер неправильно использует не
зарезервированные символы URL для своих целей. Реализаторам
следует знать, что некоторые до-HTTP/1.1 прокси-сервера, как
известно, перезаписывали Request-URI.

PHP $_SERVER

$_SERVER is a PHP super global variable which holds information about headers,
paths, and script locations.

The example below shows how to use some of the elements in $_SERVER:

Example

<?php echo $_SERVER;echo «<br>»;
echo $_SERVER;echo «<br>»;echo $_SERVER;
echo «<br>»;echo $_SERVER;echo «<br>»;echo $_SERVER;echo «<br>»;echo $_SERVER;?>

The following table lists the most important elements that can go inside $_SERVER:

Element/Code Description
$_SERVER Returns the filename of the currently executing script
$_SERVER Returns the version of the Common Gateway Interface (CGI) the server is
using
$_SERVER Returns the IP address of the host server
$_SERVER Returns the name of the host server (such as www.w3schools.com)
$_SERVER Returns the server identification string (such as Apache/2.2.24)
$_SERVER Returns the name and revision of the information protocol (such as HTTP/1.1)
$_SERVER Returns the request method used to access the page (such as POST)
$_SERVER Returns the timestamp of the start of the request (such as 1377687496)
$_SERVER Returns the query string if the page is accessed via a query string
$_SERVER Returns the Accept header from the current request
$_SERVER Returns the Accept_Charset header from the current request (such as
utf-8,ISO-8859-1)
$_SERVER Returns the Host header from the current request
$_SERVER Returns the complete URL of the current page (not reliable because not all
user-agents support it)
$_SERVER Is the script queried through a secure HTTP protocol
$_SERVER Returns the IP address from where the user is viewing the current page
$_SERVER Returns the Host name from where the user is viewing the current page
$_SERVER Returns the port being used on the user’s machine to communicate with the
web server
$_SERVER Returns the absolute pathname of the currently executing script
$_SERVER Returns the value given to the SERVER_ADMIN directive in the web server
configuration file (if your script runs on a virtual host, it will be the value
defined for that virtual host) (such as someone@w3schools.com)
$_SERVER Returns the port on the server machine being used by the web server for
communication (such as 80)
$_SERVER Returns the server version and virtual host name which are added to
server-generated pages
$_SERVER Returns the file system based path to the current script
$_SERVER Returns the path of the current script
$_SERVER Returns the URI of the current page

❮ Previous
Next ❯

Пример двойного редиректа

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

http://site.ru/catalog -> https://site.ru/catalog

Допустим, у вас сначала был настроен редирект на https подобным образом:

server {
 listen 80;
 root   /var/www/site.ru/public;

 location / {
  return 301 https://site.ru$request_uri;
 }
}

А потом вас попросили добавить редирект всех урлов без слеша на тот же урл только со слешем на конце. Вы идете в секцию c listen 443 и добавляете редирект.

server {
 listen 443 http2;
...................
 location / {
  rewrite ^(*)$ $1/ permanent;
...................
}
# curl -I -L http://site.ru/catalog

HTTP/1.1 301 Moved Permanently
Server: nginx
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
Location: https://site.ru/catalog

HTTP/2 301 
server: nginx
content-type: text/html
content-length: 162
location: https://site.ru/catalog/

HTTP/2 200 
server: nginx
content-type: text/html; charset=utf-8
vary: Accept-Encoding

На выходе у вас 2 редиректа вместо одного, что плохо для СЕО. Надо по возможности все реализовать в одном. В данном случае напрашивается простое и очевидное решение:

server {
 listen 80;
 server_name site.ru www.site.ru;
 root   /var/www/site.ru/public;

 location / {
  return 301 https://site.ru$request_uri/;
 }
}

Вроде бы все нормально. Теперь редирект будет автоматически добавлять слеш в конец запроса. Но проблемы начнутся со ссылками на медиа файлы. Например, запрос http://site.ru/catalog/img.png будет превращаться в https://site.ru/catalog/img.png, что нам совершенно не нужно. Чтобы это исправить, надо сделать так.

server {
 listen 80;
 server_name site.ru www.site.ru;

 location ~* ^.+.(js|css|png|jpg|jpeg|gif|webp|ico|woff|txt)$ {
  return 301 https://site.ru$request_uri;
 }

 location / {
  return 301 https://site.ru$request_uri/;
 }
}

Теперь все будет нормально, так как location со статикой указан в виде регулярного выражения. В случае попадания запроса в указанное правило, будет выполнен редирект без слеша. Все остальное попадет в следующий префиксный /. То же самое можно сделать с помощью if и одного location, но c if работать будет медленнее. Там где можно обходиться без if, лучше его не использовать.

Установка MySQL

На следующей странице выбираем для скачивания mysql-installer-community:

В открывшемся окне кликаем по No thanks, just start my download:

Начнется загрузка файла для установки MySQL. Дожидаемся скачивания и запускаем установочный файл — в открывшемся окне выбираем Server only:

В следующем окне кликаем по Execute:

… и дожидаемся установки СУБД:

Откроется окно конфигурации MySQL — нажимаем Next:

Выбираем установку одиночного сервера MySQL:

Оставляем все значения по умолчанию для настроек сети:

Требуем сложные пароли:

Вводим дважды пароль для пользователя root:

* также, на данном этапе мы можем сразу добавить новых пользователей.

Устанавливаем СУБД как сервис и стартуем его:

Настройки готовы для применения — нажимаем Execute:

Дожидаемся применения настроек и кликаем по Next:

Настройка завершена:

Установка завершена — нажимаем Finish.

Сервер баз данных готов к использованию.

По умолчанию, PHP поддерживаем mysql — в этом можно убедиться на странице phpinfo, найдя раздел mysqlnd:

Four Essential tools for PHP Servers are:

  • Operating System
  • Web Server
  • DBMS
  • PHP

Let’s look at each one:

Operating System

Operating System is system software that manages computer hardware and various software.

The operating system helps you in communicating with the computer. Humans can’t use any computer that does not have any operating system.

Most popular computer operating systems are:

  • Windows
  • Linux
  • Mac OS

Web Server

A Web server is a program that uses HTTP (Hypertext Transfer Protocol) to serve the files that form Web pages to users.

Popular Open Source Web Server are:

  • Internet Information Service
  • Apache HTTP Server
  • LIGHTTPD
  • NGINX
  • Node.js

MariaDB and MySQL are the most popular Database Management Systems.

A DBMS does processing and managing of data.

PHP

Last but not least is PHP.

PHP is a server scripting language, developed to make dynamic web pages. The PHP interpreter executes PHP language. 

What is Solution Stack?

Solution Stack or Software Stack is a set of various programs that are essential in creating a complete platform.

Параметры запроса

Мы привыкли, что на нашем сайте каждый PHP-сценарий отвечает за одну страницу. Посетитель сайта вводит в адресную строку путь, который состоит из имени домена и имени PHP-сценария. Например, так: .
Но как быть, если одна страница должна показывать разную информацию?

На сайте дневника наблюдений за погодой мы сделали отдельную страницу, чтобы показывать на ней информацию о погоде из истории за один конкретный день. То есть страница одна, но показывает разные данные, в зависимости от выбранного дня.
Также пользователи хотят добавить в закладки адреса страниц с нужными им днями. Получается, что имея только один сценарий сделать страницу, способную показывать дневник погоды за любой день невозможно? Вовсе нет!

Из чего состоит URI

URI — это уникальный идентификатор ресурса. Ресурс в нашем случае — это полный путь до страницы сайта. И вот как может выглядеть ресурс для показа погоды за конкретный день:

Разберем, из чего состоит этот URI.
Во-первых, здесь есть имя домена: .
Затем идёт имя сценария:
А всё что идёт после — это параметры запроса.

Параметры запроса — это как бы дополнительные атрибуты адреса страницы. Они отделяются от имени страницы знаком запроса. В примере выше параметр запроса только один: date=2017-10-30.
Имя этого параметра:, значение: .
Параметров запроса может быть несколько, тогда они разделяются знаком амперсанда:

В примере выше указывается два аргумента: дата и единица измерения температуры.

Параметры запроса как внешние переменные

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

Получение параметров запроса

Если есть внешние переменные, то как их прочитать?
Все параметры запроса находятся в специальном, ассоциативном массиве , а значит сценарий, вызванный с таким адресом: будет иметь в этом массиве два значения с ключами и .
Запрос на получение данных за выбранный день выглядит так:

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

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

Формирование URI с параметрами запроса

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

Здесь мы использовали две функции:

  • — получает имя текущего сценария;
  • — преобразует ассоциативный массив в строку запроса.

Распаковка архива Apache

Открываем скаченный с веб-сервером архив и распаковываем (копируем) директорию «Apache24» в корень локального диска C:

Для базовой настройки веб-сервера Apache перейдем в директорию «C:\Apache24\conf\» и найдем файл «httpd.conf». Откроем данный файл в текстовом редакторе, просмотрим его и по необходимости внесем изменения. Большая часть файла состоит из комментарий и пояснений, начинающихся со знака # (решетка). В качестве текстового редактора могу посоветовать Notepad++.

Конфигурационный файл httpd.conf

httpd.conf — главный файл конфигурации веб-сервера Apache, содержащий директивы, управляющие работой веб-сервера.

Notepad++ — свободный текстовый процессор (текстовый редактор) с открытым исходным кодом для Windows с подсветкой синтаксиса большого количества языков программирования и разметки.

Изменим значения основных директив конфигурационного файла httpd.conf

ServerRoot "С:/Apache24"

каталог, в котором расположен веб-сервер

Listen 80

номер порта для веб-сервера

LoadModule rewrite_module modules/mod_rewrite.so

Для загрузки модуля mod_rewrite раскомментируем строку

AddDefaultCharset utf-8

значение кодировки по умолчанию

ServerAdmin admin@example.com
ServerName localhost:80

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

DocumentRoot "C:/Apache24/htdocs"

Назначаем корневую директорию управления сайтами

ErrorLog "logs/error.log"

расположение файла журнала ошибок.

LogLevel warn

уровень ошибок

CustomLog "logs/access.log" common

Установка сервиса (службы) Apache

Далее необходимо установить сервис Apache как службу. Для этого нам понадобится командная строка. Командная строка должна быть запущена от имени администратора.

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

Для того чтобы запустить командную строку необходимо нажать на кнопку «Пуск». В поле поиска введите «cmd» или «Командная строка», затем в списке результатов поиска наведите мышкой на найденный пункт («cmd» или «Командная строка»), щелкните по нему правой кнопкой мыши и выберите пункт «Запуск от имени администратора».

Перед нами появится окно консоли.

C:\Windows\system32>

Теперь необходимо перейти в директорию веб-сервера «bin» где находится файл «httpd.exe». Для этого используем команду «cd» и указываем полный путь до директории где находится файл «httpd.exe».

C:\Windows\system32>cd C:\Apache24\bin
C:\Apache24\bin>

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

C:\Apache24\bin>httpd.exe -k install

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

Installing the Apache2.4 service
The Apache2.4 service is successfully installed.
Testing httpd.conf....
Errors reported here must be corrected before the service can be started.

Перевод:
Установка службы Apache2.4
Служба Apache2.4 успешно установлен.
Тестирование httpd.conf ….
Ошибки, описанные здесь, должны быть исправлены и услуга может быть запущена.

Строка «The Apache2.4 service is successfully installed» означает, что служба установлена.

Если после строки «Errors reported here must be corrected before the service can be started» нет никаких сообщений, это означает, что в конфигурационных файлах не найдено критических ошибок и служба Apache24 запущена. Проверить ее работу можно открыв в браузере страницу localhost или страницу 127.0.0.1. Если страница по данным адресам открывается, то Вы добились желаемого, веб-сервер Apache установлен.

В случае, если после строки «Errors reported here must be …» присутствуют сообщения, то необходимо их исправить и перезапустить службу Apache. Обращаю Ваше на фразу «перезапустить», а не установить, ведь служба Apache24 уже установлена, просто она не может быть запущена, так как имеет ошибки в конфигурации.

Простой роутинг

Если единая точка входа настроена правильно, то при заходе по любому несуществующему URL-адресу, например /test должен запуститься файл index.php.

URL текущей страницы находится в переменной $_SERVER

Теперь мы можем написать очень простой роутер, который смотрит на текущий URL и подключает соответствующий скрипт:

Внесём ещё пару доработок. Во-первых, зачастую URL-адреса должны работать вне зависимости от наличия GET-параметров, поэтому вырежем их из URI:

Кроме этого, часто требуется получить доступ к определённой части URL. Для этого разобьём URL на части по слешу:

В переменной $segments для URL /products/15 будет лежать массив вида .

Теперь мы можем легко добавить маршруты для админки:

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

При хранении URL адресов в базе данных роутинг будет выглядеть примерно так (реальный код зависит от библиотеки, которую вы используете для взаимодействия с БД):

Как в PHP поменять заголовки и метод HTTP запроса

В этой статье мы использовали утилиту cURL. Рассмотрим вариант, когда вы работаете с cURL через PHP — типичный случай для веб-серверов.

Что касается использования методов, отличных от GET, то для метода POST есть специальный параметр CURLOPT_POST, для метода PUT есть CURLOPT_PUT.

Для DELETE, CONNECT, HEAD и других более редки либо просто произвольных методов запроса используйте CURLOPT_CUSTOMREQUEST следующим образом (замените «МЕТОД» на нужный вам):

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "МЕТОД");

Создадим теперь файл methods.php:

sudo gedit /var/www/html/methods.php

и скопируем в него:

<?php

$target_url = "localhost/headers.php";
$agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36';
//$referer = 'REFERER HERE';
$cookies = '';

$ch = curl_init($target_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "MIAL");
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
//curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 'true');

$response_data = curl_exec($ch);

if (curl_errno($ch) > 0) {
	die(PHP_EOL . PHP_EOL . 'Ошибка curl: ' . curl_error($ch) . PHP_EOL . PHP_EOL . print_r(curl_getinfo($ch)) . PHP_EOL . PHP_EOL);
} elseif (empty($response_data)) {
	die(PHP_EOL . PHP_EOL . 'Returned empty result: ' . print_r(curl_getinfo($ch)) . PHP_EOL . PHP_EOL);
}

curl_close($ch);

print_r (headers_list()) . PHP_EOL;
echo $response_data . PHP_EOL;

Этот скрипт делает HTTP запрос указанным методом и показывает все полученные HTTP заголовки ответа.

Файл headers.php делаем таким:

<?php

header('HTTP/1.1 599 ' . 'Just because we can!');
header ('HackWare: I am here!');

Запустим methods.php прямо в командной строке:

php /var/www/html/methods.php

В последнем примере мы добились:

  • cURL в скрипте PHP использует пользовательский метод запроса MIAL — можно использовать для проверки, какие методы поддерживает сервер; ещё такие запросы не обнаруживаются фильтром «http» в Wireshark.
  • ответ мы получили с произвольным комментарием в строке состояния и с заголовком с произвольным именем и содержанием.

Latest Magento Tips, Guides, & News

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector