Как создать браузер в php devel studio
Перейти к содержимому

Как создать браузер в php devel studio

  • автор:

Азы разработки на Битрикс

Дабы не было не понимания, скажу сразу, данный пост я писал для людей, которые только начинают знакомиться с CMS 1С-Битрикс. Можно сказать это краткий ликбез по принципу работы данной системы. Я опишу из каких компонентов она состоит, что за что отвечает и как формируется web страница. Рекомендую прочесть данный пост перед изучением официальной документации

  • курс разработчика http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&INDEX=Y
  • документация по API http://dev.1c-bitrix.ru/user_help/index.php

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

Начну с небольшого пролога, система 1С-Битрикс разработана на основе Bitrix Framework. Которая в свою очередь, вроде как основывается на Zend Framework, в официальной документации об этом сказано в скользь. Данный фреймворк построен по принципу Model-View-Controller, написан на PHP и использует в качестве СУБД следующие продукты: MySQL, Oracle, MS SQL.

CMS 1С-Битрикс платная, но есть бесплатная 30-дневная пробная версия, которую можно скачать на официальном сайте (в гугле не сложно найти).

Логически 1С-Битрикс можно разбить не следующие элементы:
Сравнивая 1С-Битрикс с шаблоном проектирования Model-View-Controller, можно сказать что:

  • Модуль в 1С-Битрикс это модель в MVC.
  • Компонент в 1С-Битрикс это контроллер и представление в MVC (компонент с помощью API одного или нескольких модулей манипулирует данными, а шаблон компонента (представление) выводит данные на страницу).
  • Шаблон в 1С-Битрикс это чистое представление в понятии MVC (от него зависит не содержимое сайта а его оформление).

P.S. Это деление условно, т.к. я считаю, что фреймворк Bitrix придерживается технологии MVC не достаточно строго.

Начнем с модулей…

Модули располагаются в /bitrix/modules/, задача каждого из них – предоставить API для выполнения той или иной функцию для CMS в целом, например: дать возможность хранить и выводить информациювроде статей, новостей, фотогалерей (модуль «информационные блоки»); организовать интернет-магазин(модуль «Интернет-магазин»); гибко управлять ценами на товар и связывать интернет-магазин с 1С:Предприятие и другими сервисами вроде Яндекс.Маркет (модуль «Торговый каталог»); датьвозможность организовать блог (модуль «Блоги»), форум (модуль «Форумы») и т.п. Предоставляемые модулями функции могут использовать как другие модули так и компоненты.

Помимо модулей, задача которых в расширение возможностей, существуют модули обеспечивающие работу самой CMS, например : модуль с именем «Главный модуль» – отвечает за общее функционирование системы и взаимодействие всех модулей; модуль «Управление структурой сайта» – предоставляет панель администратора и т.д..

Вообщем, если обобщить выше сказанное, возможности CMS 1С-Битрикс зависят от состава модулей. Состав может быть минимальным, имея только необходимые модули и немного функциональных, а может быть распухшим с набитыми кучей модулей на все случаи жизни. Поэтому в зависимости от поставленных задач CMS 1С-Битрикс продается в разных исполнениях – называемыми редакциями, перечислю их:

  • Первый сайт (5 модулей)
  • Старт (11 модулей)
  • Стандарт (19 модулей)
  • Малый бизнес (25 модуля)
  • Эксперт (33 модуля)
  • Бизнес (40 модулей)
  • Веб-кластер (40 модулей)
  • Бизнес веб-кластер (43 модулей)

Касаться технических сторон создания своих модулей я не буду, думаю web-разработчикам, которые только знакомятся с 1С-Битрикс знать о таких подробностях пока излишне. Вы всегда можете найти всю необходимую информацию в официальной документации (ссылки указанны в начале поста).

О компонентах…

Про компоненты я расскажу более подробно, править их вы будете намного чаще, чем модули. Хочу внести ясность и однозначность в понимание понятие «компонента» в данной системе. Если вы работали на других CMS, то может возникнуть путаница, традиционно модулями в CMS называют некиефункциональные расширения, которые можно устанавливать/удалить, скачивать и разрабатывать самому. Например, это может быть модуль вывода формы на e-mail подписку или модуль выводящий список популярных постов. В CMS 1С-Битрикс эту роль играют – компоненты. Список доступных компонентов вы можете увидеть в данной директории www\bitrix\components\. Где директория bitrix это пространство имен для данных компонентов, нам как бы говорят что они «битриксовые», т.е. идут с системой из коробки.

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

  • В контроллере

www\bitrix\components\bitrix\имя_компонента\component.php

  • И в представление (так называемый шаблон компонента) —

www\bitrix\components\bitrix\имя_компонента\templates\имя_ша ­блона_компонента\template.php .

Суть работы компонента хорошо описана в официальной документации, повторю их слова еще раз «компонент (т.е. его контроллер замечание от меня), с помощью API одного или нескольких модулей, манипулирует данными, шаблон компонента выводит данные на страницу».

Компонент в своем составе может иметь несколько шаблонов, один из которых будет активным(указывается при вызове компонента).

Помимо контроллера и представления, компонент имеет файлы, выполняющие более второстепенные задачи: файл – содержимого справки, логотип компонента для админпанели, файл-описание компонента для админпанели и т.п.

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

  • help (директория, файлы справки компонента, т.е. всплывающие подсказки при настройке компонента)
  • images (директория, изображения которые использует компонент)
  • lang (директория, содержит подпапки с языковыми файлами)
  • templates (директория с шаблонами, т.е. с представлениями)
  • .description.php (файл с описанием компонента)
  • .parameters.php (файл содержит описание входных параметров компонента, файл нужен только для конфигурирование компонента через окошко)
  • component.php (файл (контроллер), основная логика компонента)

Зайдя в директорию любого компонента (www\bitrix\components\пространство_имен\имя_компонента) вы всегда увидите схожую стркутуру, как продемонстрировано выше. Стоит добавить, что компонент все для своей работы хранит в своей папки, поэтому переносить компонент с одного web сайта на другой web сайт – значит просто скопировать папку.

Технически работу компонента можно представить следующим образом: в шаблоне сайта (footer.php или header.php, о них я расскажу позже) вызывается компонент с заданными шаблоном и параметрами:

Далее CMS формирует массив с параметрами $arParams, который обрабатывает контроллер «component.php». Контроллер (component.php) согласно своей логике работы и полученного массива параметров формирует результат своей работы, т.е. массив $arResult, который далее использует шаблон компонента (templates\имя_шаблона_компонента\template.php). Представление (или шаблон компонента) отображает результат работы в виде html кода, в задуманном оформление, в том месте где вы вызвали указанный выше код.

Параметры массива arParams=array() можно задать через запяту напрямую в коде (“ключ” => “значение”) или через окошко «параметры компонента». Хочу добавить, что если изменять параметры через окошко«параметры компонента», то они все равно сохраняются в коде, как содержимое массива arParams. Что бы вызвать это окно, первым делом нужно авторизоваться в системе как администратор, далее зайти на сам сайт, выбрать компоненты -> режим правки, далее кликнуть по нужному компоненту два раза.

Как пример, на пальцах. В желтом овале компонент «bitrix:search.form» (перед двоеточием пространство имен в котором данный компонент, после название компонента), по которому я тыкнул два раза. Далее откроется окошко «параметры компонента». Если мы изменим значение параметра (тот что в красном овале) и нажмем сохранить. То в соответствующем файле представления шаблона (footer.php или header.php, о них я расскажу позже), в коде вызова компонента (обозначил зеленой рамкой) измениться значение параметра (в красном кружке). И наоборот, изменения в коде, будут заметны через окошко.

Замечу еще, что шаблоны компонентов могут быть системными и пользовательскими. Системные это те, что уже идут в стандартной поставки и распологаются в дриектории «www\bitrix\components\bitrix\имя_компонента\templates\». Если нам нужен свой шаблон для компонента, то мы должны создать пользовательским шаблон, и поместить его в папку со своим шаблоном сайта, т.е. по следующему адресу «www\bitrix\templates\имя_шаблона_сайта\components\bitrix\имя ­_компонента\имя_шаблона_компонента». Дальше, остается подключить наш пользовательский шаблон к компоненту, это можно сделать в визуальном редакторе шаблона (при двойном шелчке по нему) или подправить код его вызова (второй параметр $APPLICATION->IncludeComponent(…)).

Если при вызове или настройке компонента шаблон не указывается, то используется системный шаблон «.default».

В том случае если изменением шаблона компонента вам будем мало, допустим вы хотите выводить какую-то еще информацию в шаблоне, помимо той что может обеспечить логика компонента (component.php). То вы можете добавить в директорию пользовательского шаблона компонента файл – файлresult_modifier.php (в нем мы работаем с $arResult перед кешированием) и файл component_epilog.php (в нем работаем с $arResult после кеширования), таким образом вы дополняете нужную вам функциональность в компонент не изменяя его контроллер (т.е. component.php). Это хорошее правило, ведь все изменения в работе чего либо в CMS должны приходить и уходить вместе с шаблоном сайта, плюс к этому, системный компонент можно спокойно обновлять, до новых версий.

Есть правда и другой способ добавления функциональности, копируем тот компонент, который хотим изменить из www\bitrix\components\bitrix в свое пространство именwww\bitrix\components\мое_прост_имен, далее делаем с ним что хотим, добавляем нужный функционал и вызываем его вместо прежнего компонента в шаблоне сайта (footer.php или header.php). Но в этом случае обновляться будет только системный компонент. Этот способ стоит использовать если предыдущий метод (использовать файлы result_modifier.php и component_epilog.php в шаблоне компонента) не помогает достичь нужную вам функциональность.

P.S. В документации написано, что файл result_modifier.php подключается и исполняется, только тогда когда шаблон не кешируется, но у меня, на реальной практики он почему-то исполняется в любом случае.

И наконец шаблоны …

Тут все просто, шаблон в CMS 1C-Битрикс складывается из двух частей, верхней и нижней, все что между ними это информационное наполнение сайта, т.е. контент. Храняться шаблоны в директорииwww\bitrix\templates, каждая папка это отдельный шаблон. Среди папок вы всегда найдете «.default», это специальный «шаблон», он содержит шаблоны компонентов и файлы, общие для остальных шаблонов сайта. Трогать при интеграции макета мы его вряд ли будем.

Зайдя в директорию любого шаблона вы увидите следующую структуру:

  • components (директория, содержит поддиректории с шаблонами компонент)
  • images (директория, картинки данного шаблона)
  • include_areas (директория, содержит файлы, которые включаются в шаблоне сайта)
  • lang (директория, содержит языковые файлы)
  • page_templates (директория, содержит файлы-шаблоны, они выводятся с помощью компонента «подключаемые области» (bitrix:main.include), при выводе в браузер данных шаблонов их содержимое наполняется в каждом отдельном разделе или подразделе с помощью файла index_inc.php)
  • snippets (директория, содержит сниппеты – маленькие фрагменты html-кода для ускорения работы контент-менеджера по созданию часто встречающихся блоков кода)
  • themes (директория, содержит подпаки с темами оформление данного шаблона, под темой понимается своя директория: с шаблонами компонент – components, директория – images с изображениями, файл с названием темы – description.php, изображение-превьюшки данной темы и файл стилей шаблона template_styles.css)
  • header.php (файл, отвечающий за вывод верхней части шаблона, т.е. до контента)
  • footer.php (файл, отвечающий за вывод нижний части шаблона, т.е. после контента)
  • description.php (файл, содержит название и описание шаблона, которое выводиться в админпанели)
  • .styles.php (файл, описания стилей для визуального редактора страниц)
  • template_styles.css (файл, стили шаблона)
  • styles.css (файл, стиль для контента и подключаемы областей, вообщем стиль контента сайта)

Обязательные файлы обеспечивающие минимум шаблона это:

Файл header.php – содержит html код с php вставками , в которых вызываются компоненты и подключаются файлы, в footer.php все аналогично. В данных файлах задается верхняя и нижняя часть шаблона.

Стили задаются в template_styles.css и styles.css.
Файл description.php необходим для описания шаблона для админпанели.

После всего сказанного у вас может возникнуть вопрос, если в header храниться верхняя часть шаблона а в footer нижняя а между ними контент, то к чему относить левую и правую боковую панелью(sidebar) ? Разработчики предлагают как вариант такое решение

Оранжевым цветом обозначено то что относиться к header.php, зеленым к footer.php, а голубым к контенту. Вы можете выбрать какой-то свой вариант. Могут быть ситуации, когда одна из боковых панелей зависит от каждой страницы сайта, тогда её логично вынести из дизайна шаблона и считать её контентом.

О разделах, подразделах и наполнение информации…

Итак, мы рассматриваем CMS 1С-Битрикс как взаимодействие модулей, компонентов и шаблона. И с ними мы вроде как разобрались, осталось понять как сайт в системе 1С-Битрикс наполнить информацией. А если быть точнее, то, как наполнить структурированной информацией, т.е. как создать разделы, если нужно подразделы разделов и страницы разделов.

Вообщем, раздел в Битрикс это просто директория, которая располагается в /www. Называть ее можно по любому, т.к. имя раздела в данной CMS не зависит от имени папки. В директории-раздел должны быть как минимум следующие файлы:

  • index.php – центральная страница раздела, это php скрипт, отвечающий за наполнение контентом. В данном файле могут вызываеться компоненты, подключаться файлы, а также можно просто хранить статичный текст.
  • .section.php – файл содержит описание – имя данного раздела

Помимо этих двух основных, могут быть еще файл:

.положение.menu.php – Файл php, отвечает за то, что показывать компоненту «меню» («menu»), когда мы зайдем в данный раздел сайта. Технически – это файл с массивом $aMenuLinks, в котором каждый элемент содержит название и ссылку. Данный файл считывает компонент «menu» и выводит соответствующие пункты меню. Вместо «положение» вы должны указать какой компонент «menu» (их может быть несколько) будет читать этот файл, это может быть «top», «right», «left» и т.д. Как задается тип компонента? Смотрим код вызова компонента «menu» (в header.php или foter.php) и обращаем внимание на параметр ROOT_MENU_TYPE, его значение и укажет его тип или что он будет читать: .top.menu.php или.left.menu.php и т.д.

Если шаблон компонента «menu» позволяет показывать подкаталоги (выдвижное меню), то мы должны указать какой файл читать для подкаталогов в параметре CHILD_MENU_TYPE.

Если файла «.положение.menu.php» в директории раздела не будет, то движок Битрикс будет искать его вкаталоге сверху, пока не найдет. Меню же нужно знать что выводить.

P.S. Помимо index.php в разделе могут быть другие страницы.

В любом разделе (или директории) могут быть подразделы (директории в данной директории), содержимое их аналогичное. Также хочу сказать, что директория www также имеет свой набор index.php,.section.php и .положение.menu.php, ее можно рассматривать как главный раздел сайта.

Наполнять сайт структурированной информацией (создавать разделы, подразделы, их страницы с информацией) можно как через панель администратора (красный овал)

так и вручную, т.е. сами создаем папки, необходимые файлы в них, редактируем файл “.положение.menu.php” в www (иначе нашего нового раздела не будет в меню).

На этом, данный пост я закончу. Для разработчика, который только знакомиться с CMS 1С-Битрикс данной информации будет достаточно что-бы примерно понять, что эта за система, удобна она или нет, найти сходства с другими CMS или наоборот увидеть явные различия. Это даст первое приближение, более глубокое погружение вы получите уже изучая документацию и работая с данной CMS.

Руководство по установке драйверов Майкрософт для PHP для SQL Server в Linux и MacOS

В следующих инструкциях предполагается чистая среда и показано, как установить PHP 8.1, драйвер Microsoft ODBC, веб-сервер Apache и драйверы Microsoft Driver для PHP для SQL Server на Ubuntu, Red Hat, Debian, Suse, Alpine и macOS. В этих инструкциях рекомендуется установка драйверов с помощью PECL, но вы можете скачать предварительно созданные двоичные файлы со страницы проекта драйверов Майкрософт для PHP для SQL Server на сайте GitHub и установить их по инструкциям из статьи Loading the Microsoft Drivers for PHP for SQL Server (Загрузка драйверов Майкрософт для PHP для SQL Server). Описание процесса загрузки расширений и причины, по которым расширения не добавляются в файл php.ini, см. в статье о загрузке драйверов.

С помощью следующих инструкций производится установка PHP 8.1 по умолчанию с помощью pecl install , если доступны пакеты PHP 8.1. Возможно, потребуется сначала выполнить pecl channel-update pecl.php.net . Некоторые поддерживаемые дистрибутивы Linux по умолчанию используют PHP 7.1 или более ранних версий, которые не поддерживаются последней версией драйверов PHP для SQL Server. См. заметки в начале каждого раздела, чтобы установить PHP 8.0 или 8.2.

Также включены инструкции по установке диспетчера процессов PHP FastCGI (PHP-FPM) в Ubuntu. PHP-FPM требуется, если вместо Apache используется веб-сервер nginx.

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

См . раздел «Матрица поддержки» для последней поддерживаемой версии операционных систем.

Убедитесь, что установлена последняя версия драйвера ODBC, чтобы обеспечить оптимальную производительность и безопасность. Инструкции по установке см. в разделе «Установка драйвера Microsoft ODBC для SQL Server (Linux) или установка драйвера Microsoft ODBC для SQL Server (macOS)».

Установка на Ubuntu

Чтобы установить PHP 8.0 или 8.2, замените 8.1 на 8.0 или 8.2 в следующих командах.

Шаг 1. Установка PHP (Ubuntu)

sudo su add-apt-repository ppa:ondrej/php -y apt-get update apt-get install php8.1 php8.1-dev php8.1-xml -y --allow-unauthenticated 

Шаг 2. Установка необходимых компонентов (Ubuntu)

Установите драйвер ODBC для Ubuntu, следуя инструкциям в статье Установка Microsoft ODBC Driver for SQL Server (Linux). Также обязательно установите пакет unixodbc-dev . Он используется командой pecl для установки драйверов PHP.

sudo apt-get install unixodbc-dev 

Шаг 3. Установка драйверов PHP для Microsoft SQL Server (Ubuntu)

sudo pecl install sqlsrv sudo pecl install pdo_sqlsrv sudo su printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini exit sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv 

Если в системе только одна версия PHP, последний шаг можно упростить: phpenmod sqlsrv pdo_sqlsrv .

Шаг 4. Установка Apache и настройка загрузки драйвера (Ubuntu)

sudo su apt-get install libapache2-mod-php8.1 apache2 a2dismod mpm_event a2enmod mpm_prefork a2enmod php8.1 exit 

Шаг 5. Перезапуск Apache и тестирование примера скрипта (Ubuntu)

sudo service apache2 restart 

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

Установка в Ubuntu с PHP-FPM

Чтобы установить PHP 8.0 или 8.2, замените 8.1 на 8.0 или 8.2 в следующих командах.

Шаг 1. Установка PHP (Ubuntu с PHP-FPM)

sudo su add-apt-repository ppa:ondrej/php -y apt-get update apt-get install php8.1 php8.1-dev php8.1-fpm php8.1-xml -y --allow-unauthenticated 

Проверьте состояние службы PHP-FPM, выполнив следующее:

systemctl status php8.1-fpm 

Шаг 2. Установка необходимых компонентов (Ubuntu с PHP-FPM)

Установите драйвер ODBC для Ubuntu, следуя инструкциям в статье Установка Microsoft ODBC Driver for SQL Server (Linux). Также обязательно установите пакет unixodbc-dev . Он используется командой pecl для установки драйверов PHP.

Шаг 3. Установка драйверов PHP для Microsoft SQL Server (Ubuntu с PHP-FPM)

sudo pecl config-set php_ini /etc/php/8.1/fpm/php.ini sudo pecl install sqlsrv sudo pecl install pdo_sqlsrv sudo su printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini exit sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv 

Если в системе только одна версия PHP, последний шаг можно упростить: phpenmod sqlsrv pdo_sqlsrv .

Убедитесь, что sqlsrv.ini и pdo_sqlsrv.ini находятся в /etc/php/8.1/fpm/conf.d/ :

ls /etc/php/8.1/fpm/conf.d/*sqlsrv.ini 

Перезапустите службу PHP-FPM:

sudo systemctl restart php8.1-fpm 

Шаг 4. Установка и настройка nginx (Ubuntu с PHP-FPM)

sudo apt-get update sudo apt-get install nginx sudo systemctl status nginx 

Чтобы настроить nginx, необходимо изменить файл /etc/nginx/sites-available/default . Добавьте index.php в список под разделом со следующим текстом: # Add index.php to the list if you are using PHP :

# Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html index.php; 

Затем раскомментируйте и измените раздел после # pass PHP scripts to FastCGI server следующим образом:

# pass PHP scripts to FastCGI server # location ~ \.php$ < include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; >

Шаг 5. Перезапуск nginx и тестирование примера скрипта (Ubuntu с PHP-FPM)

sudo systemctl restart nginx.service 

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

Установка в Red Hat

Шаг 1. Установка PHP (Red Hat)

Чтобы установить PHP в Red Hat 7, выполните следующие команды:

Чтобы установить PHP 8.0 или 8.2, замените remi-php81 на remi-php80 или remi-php82 соответственно в следующих командах.

sudo su yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm subscription-manager repos --enable=rhel-7-server-optional-rpms yum install yum-utils yum-config-manager --enable remi-php81 yum update # Note: The php-pdo package is required only for the PDO_SQLSRV driver yum install php php-pdo php-pear php-devel 

Чтобы установить PHP в Red Hat 8, выполните следующие команды:

Чтобы установить PHP 8.0 или 8.2, замените remi-8.1 на remi-8.0 или remi-8.2 соответственно в следующих командах.

sudo su dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm dnf install yum-utils dnf module reset php dnf module install php:remi-8.1 subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms dnf update # Note: The php-pdo package is required only for the PDO_SQLSRV driver dnf install php-pdo php-pear php-devel 

Шаг 2. Установка необходимых компонентов (Red Hat)

Установите драйвер ODBC для Red Hat 7 или 8, следуя инструкциям в статье Установка Microsoft ODBC Driver for SQL Server (Linux). Также обязательно установите пакет unixodbc-dev . Он используется командой pecl для установки драйверов PHP.

Шаг 3. Установка драйверов PHP для Microsoft SQL Server (Red Hat)

sudo pecl install sqlsrv sudo pecl install pdo_sqlsrv sudo su echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/30-pdo_sqlsrv.ini echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/20-sqlsrv.ini exit 

Можно также установить их из репозитория Remi:

sudo yum install php-sqlsrv 

Шаг 4. Установка Apache (Red Hat)

sudo yum install httpd 

SELinux устанавливается по умолчанию и выполняется в принудительном режиме. Чтобы разрешить Apache подключаться к базам данных через SELinux, выполните следующую команду:

sudo setsebool -P httpd_can_network_connect_db 1 

Шаг 5. Перезапуск Apache и тестирование примера скрипта (Red Hat)

sudo apachectl restart 

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

Установка в Debian

Чтобы установить PHP 8.0 или 8.2, замените 8.1 в следующих командах 8.0 или 8.2.

Шаг 1. Установка PHP (Debian)

sudo su apt-get install curl apt-transport-https wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list apt-get update apt-get install -y php8.1 php8.1-dev php8.1-xml php8.1-intl 

Шаг 2. Установка необходимых компонентов (Debian)

Установите драйвер ODBC для Debian, следуя инструкциям в статье Установка Microsoft ODBC Driver for SQL Server (Linux). Также обязательно установите пакет unixodbc-dev . Он используется командой pecl для установки драйверов PHP.

Кроме того, может потребоваться создать правильный языковой стандарт, чтобы выходные данные PHP правильно отображались в браузере. Например, для языкового стандарта en_US UTF-8 выполните следующие команды:

sudo su sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g' /etc/locale.gen locale-gen 

Может потребоваться добавить /usr/sbin в $PATH , так как там находится исполняемый файл locale-gen .

Шаг 3. Установка драйверов PHP для Microsoft SQL Server (Debian)

sudo pecl install sqlsrv sudo pecl install pdo_sqlsrv sudo su printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini exit sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv 

Если в системе только одна версия PHP, последний шаг можно упростить: phpenmod sqlsrv pdo_sqlsrv . Как и в случае с locale-gen , phpenmod находится в /usr/sbin , поэтому может потребоваться добавить этот каталог в $PATH .

Шаг 4. Установка Apache и настройка загрузки драйвера (Debian)

sudo su apt-get install libapache2-mod-php8.1 apache2 a2dismod mpm_event a2enmod mpm_prefork a2enmod php8.1 

Шаг 5. Перезапуск Apache и тестирование примера скрипта (Debian)

sudo service apache2 restart 

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

Установка в Suse

В приведенных ниже инструкциях замените нужной версией Suse. Если вы используете Suse Enterprise Linux 15, используйте значение SLE_15_SP3 или SLE_15_SP4 (или более поздней версии). Для Suse 12 используйте значение SLE_12_SP5 (или более поздней версии). Не все версии PHP доступны для всех версий Suse Linux. В http://download.opensuse.org/repositories/devel:/languages:/php указано, какие версии Suse имеют доступную версию PHP по умолчанию, а в http://download.opensuse.org/repositories/devel:/languages:/php:/ — какие еще версии PHP доступны для разных версий Suse.

Пакеты для PHP 7.4 или более поздней версии начиная с сегодняшнего дня больше не доступны для Suse 12.

Шаг 1. Установка PHP (Suse)

sudo su zypper -n ar -f https://download.opensuse.org/repositories/devel:languages:php//devel:languages:php.repo zypper --gpg-auto-import-keys refresh zypper -n install php8 php8-pdo php8-devel php8-openssl 

Шаг 2. Установка необходимых компонентов (Suse)

Установите драйвер ODBC для SUSE, следуя инструкциям в статье Установка Microsoft ODBC Driver for SQL Server (Linux). Также обязательно установите пакет unixodbc-dev . Он используется командой pecl для установки драйверов PHP.

Шаг 3. Установка драйверов PHP для Microsoft SQL Server (Suse)

sudo pecl install sqlsrv sudo pecl install pdo_sqlsrv sudo su echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/pdo_sqlsrv.ini echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/sqlsrv.ini exit 

Шаг 4. Установка Apache и настройка загрузки драйвера (Suse)

sudo su zypper install apache2 apache2-mod_php8 a2enmod php8 echo "extension=sqlsrv.so" >> /etc/php8/apache2/php.ini echo "extension=pdo_sqlsrv.so" >> /etc/php8/apache2/php.ini exit 

Шаг 5. Перезапуск Apache и тестирование примера скрипта (Suse)

sudo systemctl restart apache2 

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

Установка в Alpine

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

Шаг 1. Установка PHP (Alpine)

Пакеты PHP для Alpine находятся в репозитории edge/community . Проверьте раздел Включить репозиторий сообщества на их вики-странице. Добавьте следующую строку в /etc/apk/repositories , заменив на URL-адрес зеркального отображения репозитория Alpine:

http:///alpine/edge/community 
sudo su apk update # Note: The php*-pdo package is required only for the PDO_SQLSRV driver # For PHP 7.* apk add php7 php7-dev php7-pear php7-pdo php7-openssl autoconf make g++ # For PHP 8.* apk add php8 php8-dev php8-pear php8-pdo php8-openssl autoconf make g++ # The following symbolic links are optional but useful ln -s /usr/bin/php8 /usr/bin/php ln -s /usr/bin/phpize8 /usr/bin/phpize ln -s /usr/bin/pecl8 /usr/bin/pecl ln -s /usr/bin/php-config8 /usr/bin/php-config 

Шаг 2. Установка необходимых компонентов (Alpine)

Установите драйвер ODBC для Alpine, следуя инструкциям в статье Установка Microsoft ODBC Driver for SQL Server (Linux). Также обязательно установите пакет unixodbc-dev ( sudo apk add unixodbc-dev ). Он используется командой pecl для установки драйверов PHP.

Шаг 3. Установка драйверов PHP для Microsoft SQL Server (Alpine)

sudo pecl install sqlsrv sudo pecl install pdo_sqlsrv sudo su echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/10_pdo_sqlsrv.ini echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/20_sqlsrv.ini 

Шаг 4. Установка Apache и настройка загрузки драйвера (Alpine)

# For PHP 7.* sudo apk add php7-apache2 apache2 # For PHP 8.* sudo apk add php8-apache2 apache2 

Шаг 5. Перезапуск Apache и тестирование примера скрипта (Alpine)

sudo rc-service apache2 restart 

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

Установка в macOS

Установите brew, как описано ниже, если у вас ее еще нет:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 

Чтобы установить PHP 8.0 или 8.2, замените php@8.1 на php@8.0 или php@8.2 соответственно в следующих командах.

Шаг 1. Установка PHP (macOS)

brew tap brew tap homebrew/core brew install php@8.1 

PHP теперь должен быть указан в пути. Запустите php -v и убедитесь, что используется правильная версия PHP. Если в пути нет PHP или есть PHP неправильной версии, выполните следующие команды:

brew link --force --overwrite php@8.1 

При использовании Apple M1 ARM64 может потребоваться задать путь:

export PATH="/opt/homebrew/bin:$PATH" 

Шаг 2. Установка необходимых компонентов (macOS)

Установите драйвер ODBC для macOS, следуя инструкциям в статье Установка Microsoft ODBC Driver for SQL Server (macOS).

Если вы используете оборудование Apple M1 ARM64, установите драйвер Microsoft ODBC версии 17.8 или более поздней напрямую без эмулятора Rosetta 2.

Кроме того, может потребоваться установить средства make для GNU:

brew install autoconf automake libtool 

Шаг 3. Установка драйверов PHP для Microsoft SQL Server (macOS)

sudo pecl install sqlsrv sudo pecl install pdo_sqlsrv 

Если вы используете Apple M1 ARM64, вместо этого выполните следующие действия.

sudo CXXFLAGS="-I/opt/homebrew/opt/unixodbc/include/" LDFLAGS="-L/opt/homebrew/lib/" pecl install sqlsrv sudo CXXFLAGS="-I/opt/homebrew/opt/unixodbc/include/" LDFLAGS="-L/opt/homebrew/lib/" pecl install pdo_sqlsrv 

Шаг 4. Установка Apache и настройка загрузки драйвера (macOS)

Последняя версия macOS 11.0 Big Sur поставляется с предварительно установленным Apache 2.4, но компания Apple удалила некоторые необходимые сценарии. Можно установить и настроить Apache 2.4 через Homebrew. Эти действия здесь не описаны, поэтому для получения подробных сведений ознакомьтесь с руководствами Apache или Homebrew.

brew install apache2 

Чтобы найти файл конфигурации Apache ( httpd.conf ) для установки Apache, выполните следующую команду:

/usr/local/bin/apachectl -V | grep SERVER_CONFIG_FILE 

Следующие команды добавляют необходимую конфигурацию в httpd.conf . Не забудьте указать путь, возвращенный предыдущей командой, вместо /usr/local/etc/httpd/httpd.conf :

echo "LoadModule php7_module /usr/local/opt/php@8.1/lib/httpd/modules/libphp7.so" >> /usr/local/etc/httpd/httpd.conf (echo ""; echo "SetHandler application/x-httpd-php"; echo "";) >> /usr/local/etc/httpd/httpd.conf 

Шаг 5. Перезапуск Apache и тестирование примера скрипта (macOS)

sudo apachectl restart 

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

Тестирование установки

Чтобы протестировать этот пример скрипта, создайте файл с именем testsql.php в корневом каталоге документов системы. Это путь /var/www/html/ в Ubuntu, Debian и Red Hat, /srv/www/htdocs в Suse, /var/www/localhost/htdocs в Alpine и /usr/local/var/www в macOS. Скопируйте приведенный ниже скрипт, заменив имя сервера, имя базы данных, имя пользователя и пароль правильными значениями.

Пример SQLSRV

 "yourDatabase", "uid" => "yourUsername", "pwd" => "yourPassword" ); function exception_handler($exception) < echo "

Failure

"; echo "Uncaught exception: " , $exception->getMessage(); echo "

PHP Info for troubleshooting

"; phpinfo(); > set_exception_handler('exception_handler'); // Establishes the connection $conn = sqlsrv_connect($serverName, $connectionOptions); if ($conn === false) < die(formatErrors(sqlsrv_errors())); >// Select Query $tsql = "SELECT @@Version AS SQL_VERSION"; // Executes the query $stmt = sqlsrv_query($conn, $tsql); // Error handling if ($stmt === false) < die(formatErrors(sqlsrv_errors())); >?>

Success Results :

sqlsrv_free_stmt($stmt); sqlsrv_close($conn); function formatErrors($errors) < // Display errors echo "

SQL Error:

"; echo "Error information:
"; foreach ($errors as $error) < echo "SQLSTATE: ". $error['SQLSTATE'] . "
"; echo "Code: ". $error['code'] . "
"; echo "Message: ". $error['message'] . "
"; > > ?>

Пример PDO_SQLSRV

query($tsql); > catch (PDOException $exception1) < echo "

Caught PDO exception:

"; echo $exception1->getMessage() . PHP_EOL; echo "

PHP Info for troubleshooting

"; phpinfo(); > ?>

Success Results :

fetch(PDO::FETCH_ASSOC)) < echo $row['SQL_VERSION'] . PHP_EOL; >> catch (PDOException $exception2) < // Display errors echo "

Caught PDO exception:

"; echo $exception2->getMessage() . PHP_EOL; > unset($stmt); unset($conn); ?>

Перейдите в браузере на страницу https://localhost/testsql.php ( https://localhost:8080/testsql.php в Mac OS). Теперь вы сможете подключиться к базе данных SQL Server или SQL Azure. Если вы не видите сообщение об успешном выполнении с информацией о версии SQL, выполните основные действия по устранению неполадок, запустив скрипт из командной строки:

php testsql.php 

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

См. также

Getting Started with the Microsoft Drivers for PHP for SQL Server (Начало работы с драйверами Майкрософт для PHP для SQL Server)

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

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