Меню Рубрики

Установка расширения для php скриптов

Как установить расширение PHP: из репозитория и исходников

В большинстве случаев расширение можно установить из репозитория. В репозитории включаются все популярные расширения.

Выяснить, что доступно для установки можно так:

php7.0-mbstring — MBSTRING module for PHP
php7.0-mcrypt — libmcrypt module for PHP
php7.0-mysql — MySQL module for PHP
php7.0-odbc — ODBC module for PHP
php7.0-opcache — Zend OpCache module for PHP
php7.0-pgsql — PostgreSQL module for PHP
php7.0-phpdbg — server-side, HTML-embedded scripting language (PHPDBG binary)
php7.0-pspell — pspell module for PHP

Производится поиск по маске, среди результатов непосредственно php7.0 и все расширения.

Так, если планируется работа с PostgreSQL, то нужно установить php7.0-pgsql.

Любая установка — потенциально опасная операция, поэтому сначала ее следует проводить с ключем —dry-run. В этом случае будут проверены зависимости, но изменений в систему фактически не вносится.

Если ошибок не возникло, но расширение можно устанавливать

Теперь расширение php7.0-pgsql установлено, осталось его подключить.

Сборка расширений PHP

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

Компиляция нужна для расширений, отсутствующих в репозитрии и встречающихся реже.

Исходники расширений можно найти на сайте https://pecl.php.net/

Допустим, что требуется stomp (https://pecl.php.net/package/stomp)

И перейти в каталог с файлами расширения

Далее при условии, что на сервере используется одна версия PHP:

Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100412
Zend Extension Api No: 20100412

Если больше одной версии — потребуется указывать phpize под конкретную версию и phpconfig. Это бинарные файлы, использующиеся для сборки.

Ошибки в логах после сборки появляются про разные версии PHP Api Version и Zend Extension Api No говорят о не тех использованных phpize и phpconfig.

При отсутствии phpize устанавливается пакет php5-dev

configure: creating ./config.status
config.status: creating config.h
config.status: executing libtool commands

Build complete.
Don’t forget to run ‘make test’.

Installing shared extensions: /usr/lib/php7.1.21/20160303/

В результате получаем файл /usr/lib/php7.1.21/20160303/stomp.so, который нужно подключить в php.ini

При условии, что используется php той версии, для которой собрано расширение и конфигурационный файл размещается по пути /etc/php/php.ini:

Далее все процессы можно завершить, чтобы быстрее увидеть результат

Поиск

Последние статьи

Рубрики

  • Apache (20)
  • AWS (10)
  • Bash (13)
  • CRON (5)
  • CSS / изображения (6)
  • DNS (8)
  • ELK (1)
  • FastCGI (4)
  • JS (6)
  • Memcached (1)
  • MongoDB (3)
  • MySQL (52)
  • Networking (44)
  • Nginx (39)
  • NodeJS (1)
  • PHP (13)
  • Python (28)
  • Ruby (6)
  • Search (1)
  • Uncategorized (1)
  • Virtualization / Containers (27)
  • Базы данных (12)
  • Безопасность (25)
  • Высокие нагрузки (23)
  • Контроль версий (14)
  • Мониторинг (17)
  • Обзоры сервисов (23)
  • Оптимизация (1)
  • Ошибки (24)
  • Почтовые серверы (10)
  • Работа сайтов (17)
  • Распределенные системы (8)
  • Телефония (10)
  • Типовые задачи (57)
  • Ядро и ОС (23)
Подключить мониторинг

Уведомления позволят узнать о проблемах на вашем сайте вперед клиентов

источник

Как правильно подключить JS- и PHP-скрипты к вашему сайту?

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

Подключение JS-скриптов (файлы с расширением *.js) к сайту

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

Подключение JavaScript’а осуществляется двумя способами:

1. Первый – это непосредственно вставка кода в ваш сайт с помощью тегов:

2. Второй – с помощью файла:

Где «https://www.pandoge.com/main.js» – путь до файла скрипта. Такой вариант рекомендуется писать для файлов на удаленном (внешнем) сервере. Если же файл находится на вашем сайте, то можно просто указать относительный путь:

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

Что касается места подключения, то все скрипты рекомендуется подключать в секции HEAD, перед закрывающим ее тегом. Например:

Их также можно подключить в секции BODY. Например, все библиотеки рекомендуется подключать в секции HEAD, тогда как все счетчики, слайдеры, галереи и прочие скрипты – в секции BODY, также перед закрывающим тегом.

Читайте также:  Установка проекции на bmw x5 e70

Подключение PHP-скриптов (файлы с расширением *.php) к сайту

Подключение PHP-скриптов осуществляется уже тремя способами:

1. Первый – это та же вставка кода в саму страницу сайта (обратите внимание, что если вы имеете страницу с расширением *.html – вам необходимо сменить расширение на *.php) с помощью тегов:

2. С помощью файла (в таком случае подключение можно осуществлять и на странице с *.html расширением):

Но для работы этого способа в файл .htaccess, который находится в корне вашего сайта, в самый верх, необходимо добавить эти строки:

Если такого файла нет на хостинге — создайте его через любой текстовый редактор.

3. Третье – с помощью JS-скрипта. В этом случае вы также можете получить результат выполненного PHP-скрипта на сервере.

Реализация будет следующая:

Где «.result» – это класс, куда будут грузиться данные, а «/main.php», соответственно, адрес до PHP-скрипта.

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

Здесь правила абсолютно те же: полный адрес к файлу, если он находится на внешнем сервере, относительный – если на вашем.

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

Если вы осуществляете подключение скриптов первый раз – попробуйте подключить скрипты из архива, который прикреплен в конце статьи. Если в обоих случаях вы получили сообщение «Hello World!» – значит, вы все сделали правильно.

источник

Создание PHP расширения

Есть две основные причины для написания расширения для PHP :

  • Необходимо сделать обвязку к системной С/С++ библиотеке, чтобы использовать ее функционал в PHP сценариях
  • Необходимо оптимизировать существующий код написанный на PHP, увеличив его производительность

Создадим простое расширение, реализующие три простые функции, доступные в пользовательском пространстве.

Примеры кода, которые будут приведены в данном посте будут работать с PHP 5.3.x — 5.5.x. Скорее всего они будут работать с более поздними версиями.

Для создания расширения нам понадобится:

  • машина с ОС Linux (виртуальная или физическая) с установленными пакетами:
    • PHP >= 5.3
    • apache
    • набор компиляторов gcc или clang
    • m4
    • autoconf
    • automake
    • make
    • configure
    • php5-dev (php5-devel)
  • исходные тексты PHP
  • знание языка C

Создание скелета расширения

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

В системе у меня установлен PHP версии 5.4.x, используем исходные тексты соответствующей версии:

Все расширения находятся в подкаталоге ext каталога с исходными текстами. Каждое расширение имеет свой собственный подкаталог. Cкрипт ext_skel также находится в каталоге ext .

Переходим в каталог с расширениями:

Использование скрипта ext_skel :

Нас интересуют два аргумента: —extname и —proto . С помощью первого аргумента указывается название расширения, с помощью второго — файл с прототипом публичных функций, которые будет реализовывать расширение и которые будут доступны в пользовательском пространстве PHP .

Создадим файл с прототипами функций:

Каждая функция в файле — одна строка. Пример описания функции:

При описание функции мы указываем:

  • тип возвращаемых данных, если функция возвращает в пользовательское пространство PHP какие-либо данные. Указанный тип никак не влияет на генерируемый C код и используется при генерации описания функции и создании документации;
  • название функции;

если у функции есть аргументы, то:

  • тип данных,
  • название аргумента
  • при необходимости значение по умолчанию.

Аргументы мы можем указать как необязательные. Для этого их необходимо обрамить скобками [ ] . Типы данных — это PHP типы, такие как int, bool, array, float и т.д.

Формат: [тип_возвращаемых_данных] название_функции(тип_данных название_аргумента [=значение_по_умолчанию] [,необязательный_аргумент_1 [, необязательный_аргумент_2]])

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

Читайте также:  Установка варочной панели simfer

Итак опишем функции нашего расширения, открываем в текстовом редакторе файл test_extension.def и опишем три функции:

Структура расширения

После того как скрипт отработает, у нас в каталоге ext появится директория, название которой совпадает с нашим расширением, в нашем случае — test_extension . Каталог расширения будет содержать как минимум следующие файлы:

  • config.m4 — файл конфигурации для систем сборки используемый на nix системах. Данный файл говорит системе сборки какие опции конфигурации(сборки) поддерживает расширение, какие внешние библиотеки и заголовочные файлы требуются для сборки, какие исходные файлы должны быть скомпилированы как часть расшиерния. Файл написан с использованием синтаксиса GNU Autoconf
  • config.w32 — файл конфигурации для систем сборки используемый на windows системах. Назначение такое же как и у файла config.m4
  • php_test_extension.h — заголовочный файл расширения, по соглашению, название файла — название расширения + префикс php_ . Назначение такое же как и любого заголовочного файла. Файл обычно содержит дополнительные макросы, прототипы функций, глобальные переменные и т.д.
  • test_extension.c — основной файл, содержит код расширения: декларацию структур, декларацию ini записей, реализацию функций и классов пользовательского пространства, функции относящиеся к жизненному циклу расширения и др.
  • test_extension.php — PHP скрипт для проверки расширения после сборки и установки. Скрипт выводит список всех функций расширения

Помимо указанных файлов в каталоге расширения будут еще и другие файлы: .svnignore , EXPERIMENTAL , CREDITS и каталог с тестами tests . Эти файлы пока нас не интересуют

Файла config.m4

Откроем и отредактируем файл config.m4 . Так как у нас простое расширение, которое не требует внешних библиотек и заголовочных файлов, то достаточно добавить поддержку опции —enable-test_extension . В файле config.m4 найдем и расскоментируем следующие строки:

комментарий начинается с dnl :

Файла php_test_extension.h

Далее откроем и посмотрим код файла php_test_extension.h :

В самом начале объявляется переменная test_extension_module_entry с типом zend_module_entry . zend_module_entry — это структура описывающая расширение. К ней вернемся чуть позже.

Следом за переменной test_extension_module_entry объявляется указатель на эту переменную: phpext_test_extension_ptr

Затем объявляется константа PHP_TEST_EXTENSION_API значение которой зависит от платформы. Данная константа используется для экспорта функций.

Если объявлена переменная ZTS , то происходит подключение заголовочного файла TSRM.h . ZTS — Zend Thread Safety, о мультипоточности поговорим в следующий раз.

Далее идет объявление прототипов функций. Сначала идут прототипы функций относящиеся к жизненному циклу расширения:

PHP_*_FUNCTION — это макросы препроцессора, с их помощью будут созданы правильные прототипы, включающие нужные аргументы. В макросы передается название расширения. Так, например, на стадии препроцессора объявление PHP_MINIT_FUNCTION(test_extension) будет развернуто в:

Более подробнее о жизненом цикле расширения в следующем посте (я надеюсь :))

После объявления функций жизненного цикла идет объявление функций расширения, функции, которые будут доступны в пользовательском пространстве PHP :

Функции объявляются с помощью макроса PHP_FUNCTION , в макрос передается название функции, под этим названием функция будет видна в пользовательском пространстве.

Вы наверное обратили внимание на объявление функции confirm_test_extension_compiled , это функция проверки расширения, которую создал скрипт ext_skel . Эту функцию можно смело удалить.

Для примера, объявление PHP_FUNCTION(test_funct1) будет развернуто при сборке в:

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

Оставшийся код в файле php_test_extension.h пока рассматривать не будем, этот код относится к глобальным переменным и мультипоточности

Файл test_extension.c

Откроем и посмотрим код файла test_extension.с :

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

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

Далее идет объявление переменной ресурса:

Далее идет массив структур zend_function_entry , каждая структура — это информация о функции доступной в пользовательском пространстве.

Для создания структуры используется макрос PHP_FE . В макрос передается название функции и структура, описывающая аргументы функции, мы пока передаем NULL.

Далее идет инициализация структуры с информацией о расширении:

Структура zend_module_entry имеет следующие объявление:

Читайте также:  Установка гур для логана

Первые шесть полей мы не инициализируем вручную, мы вызываем макрос STANDARD_MODULE_HEADER . Затем указываем функции жизненного цикла расширения, функцию информации о расширении и версию расширения. Для инициализации оставшихся полей структуры мы используем макрос STANDARD_MODULE_PROPERTIES

Следующий блок кода, до PHP_MINIT_FUNCTION(test_extension) относится к глобальным переменным и INI параметрам. Пропускаем

Оставшийся код — реализация функций. Сначала идет реализация функций жизненного цикла расширения:

В нашем расширении эти функции ничего полезного не делают. Все функции возвращают значение макроса SUCCESS , которое приравнивается к «успеху».

Затем идет реализация функции информации о расширении:

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

Компиляция и установка расширения

Вот и дошли до сборки и проверки нашего тестового расширения. Переходим в каталог расширения:

И выполняем команду phpize :

После выполнения этой команды, на основе содержимого файла config.m4 , будут созданы файлы необходимые для конфигурации и компиляции расширения: скрипт configure и Makefile .

Конфигурируем и компилируем расширение:

Если сборка завершилась успешно, то вы увидите запись ‘Build complete.’

копируем скомпилированное расширение в каталог расширений PHP

Проверка расширения

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

и выполним скрипт test_extension.php , который находится в папке нашего расширения:

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

источник

Расширения PHP

PHP (Hypertext Preprocessor) — это широко используемый язык создания сценариев (скриптов) общего назначения, который разрабатывался для удобства web-программирования. Главное преимущество PHP — это то, что он является чрезвычайно простым для начинающего web-программиста и в то же время предлагает широкий спектр возможностей для профессионала.

Более подробную информацию о PHP можно найти на официальном сайте http://www.php.net.

Этот раздел предназначен для управления расширениями, которые используются PHP-скриптами.

Просмотр списка установленных расширений

  • Имя — название файла библиотеки, реализующего расширение PHP.
  • Статус — текущий статус расширения PHP:

— расширение установлено. — расширение не установлено. — расширение включено в сборку PHP. — расширение включено.

Установка расширений PHP

Если напротив расширения PHP в столбце «Свойства» отображается иконка , то его необходимо сначала установить. Для этого выберите необходимое поле в списке и нажмите кнопку «Установить».

Данная функция не доступна пользователям ISPmanager.

Удаление расширений PHP

Чтобы удалить расширение PHP, выберите его из списка и нажмите кнопку «Удалить». Для предотвращения случайного удаления программа попросит подтвердить или отменить ваши действия. После нажатия кнопки «ОК» выбранное расширение будет удалено.

Данная функция не доступна пользователям ISPmanager.

Включение выбранных расширений PHP

Если вы хотите включить одно или несколько установленных, но отключенных расширений PHP, выберите его в списке и нажмите кнопку «Включить». Для предотвращения случайных действий панель управления потребует подтверждения. Если в окне подтверждения вы нажмёте «Ок», то выбранные расширения станут доступными для WWW доменов пользователя, у которых PHP работает в режиме CGI, либо глобально, если расширения включает администратор панели управления.

С уровня доступа пользователя панели управления невозможно включить расширение, участвующее в зависимостях. Например, pdo_mysql зависит от pdo. Эти расширения должен включать администратор панели управления. Пользователь не сможет включить ни pdo, ни pdo_mysql. Такая логика связана с тем, что пользовательский ini-файл для режима CGI загружается вперед других файлов, описывающих изменения администратора панели управления. В результате если администратор включил расширение pdo, а пользователь pdo_mysql, то pdo_mysql будет загружен прежде, чем будет загружен pdo, что вызовет ошибку при загрузке и расширение на самом деле загружено не будет.

Выключение выбранных расширений PHP

Если вы хотите запретить использование одного или нескольких установленных расширений PHP, выберите его в списке и нажмите кнопку «Отключить». Для предотвращения случайных действий панель управления потребует подтверждения. Если в окне подтверждения вы нажмёте «Ок», то выбранные расширения станут недоступными для WWW доменов пользователя, у которых PHP работает в режиме CGI, либо глобально, если расширения включает администратор панели управления.

источник

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