Как php extension linux

Обновляем расширение Intl в PHP 7 на Linux Ubuntu 16.04

Программисты делятся на два типа: консерваторы, для которых переход на новую версию равносилен перелёту на другую планету (если читаешь это из Windows XP — поздравляю, это ты); и Викторы Цои, чьи сердца и глаза требуют перемен, и обновляют всё и вся при первой возможности. Если ты второго типа, и у тебя уже стоит последняя версия PHP на последней LTS версии Ubuntu, но покоя не даёт то, что расширение Intl использует устаревшую версию библиотеки ICU, или тебе просто понравились картинки из «Аватара» — добро пожаловать под кат! (Картинок больше не будет.)

Ну и зачем это?

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

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

Быстрый поиск по гуглу не дал внятных решений. Детальный тоже. В общем и целом пэхэпэшным программистам по барабану, какую версию ICU использует Intl. Но только не нашим! Отчаявшись искать в англоязычном сегменте интернета, совершенно случайно набрёл на запись русского блогера Сергея Стоянова, где он объясняет процесс обновления ICU в PHP 5 для Ubuntu 14.04. В PHP 7 процесс сильно отличается, но общая последовательность действий остаётся такой же: удаляем Intl; собираем новую версию ICU; устанавливаем Intl, ткнув его носом, где искать ICU; включаем Intl в PHP; открываем шампанское. Также сильно помогли комментарии к статье (особенно комментарий Антона Минина и его shell скрипт).

Версии ICU

Проверить последнюю версию ICU можно на их официальном сайте. На данный момент (февраль 2018) последний релиз — 60.2.

Чтобы проверить, какую версию ICU использует php7.0-intl, напиши в терминале и прокрути до списка установленных модулей. Найди там раздел, озаглавленный «intl». У меня там было:

Internationalization support => enabled
version => 1.1.0
ICU version => 55.1
ICU Data version => 55.1

Мягко говоря, не айс — версия 55.1 была выпущена в первой половине 2015-го, и с тех пор успела обновиться ещё 5 раз. Нужно же что-то делать!

Решение

Internationalization support => enabled
version => 1.1.0
ICU version => 60.2
ICU Data version => 60.2

Источник

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

Расширения php используют, когда требуется расширить набор функций для работы PHP-скриптов на сервере. Каждое расширение имеет узкую функциональность и способно серьезно облегчить и ускорить выполнение конкретных задач, связанных с php-кодом. В панель ISPmanager уже интегрированы популярные решения и часто достаточно только включить нужное. Но бывает и так, что для работы сайта или его компонентов необходимы другие расширения — и тут без установки вручную не обойтись.

Список практически всех доступных расширений есть на официальном сайте php.

Установленных версий php на сервере может быть несколько. Нативная версия PHP — версия из официального репозитория ОС. Дополнительно можно установить альтернативные версии. Это иногда необходимо, если для работы проекта требуется определенная версия php, которой нет в официальном репозитории.

Ниже мы рассмотрим несколько вариантов установки расширений php:

  • через панель управления ISPmanager. Большинство расширений уже установлено и подключено, но есть те, которые можно дополнительно установить или просто подключить.
  • через стандартные пакетные менеджеры yum (CentOS) и apt (Ubuntu/Debian) для нативной версии php.
  • через репозиторий модулей pecl — подойдёт как для нативной, так и для альтернативной версии php.
Читайте также:  Mikrotik vpn server windows client

Дополнительно расскажем о том, как подключить расширения в консоли.

Установка расширений через панель ISPmanager

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

После этого переходим в раздел Настройки web-сервера — PHP , выбираем нужную версию php, расширения:

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

Коротко о pecl

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

Пример 1. Представим, что у нас две версии php:

Нативная (native) — /usr/bin/php

Альтернативная (alt) — /opt/php73/bin/php — альтернативная версия php 7.3 в панели ISPmanager.

Чтобы установить расширения php, для нативной и альтернативной версии необходимо использовать разные команды.

Для нативной версии:

Для альтернативной, php 7.3, так:

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

Пример 2. Если вы используете не самую свежую версию php, то во время установки расширения можете получить сообщение о ее несоответствии требованиям — по умолчанию выбираются расширения последних версий, которые часто требуют свежих версий php. Пример уведомления:

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

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

Переходим в список изменений:

Находим в списке изменений, что последней версией расширения, поддерживающей php ниже 7 версии, является redis 2.2.8:

Из этого следует, что для установки нам нужно указать redis-2.2.8, например так (не забудьте поставить знак — между названием расширения и его версией):

Важно!

После установки любого из расширений нужно перезапускать apache2/httpd или php-fpm. Также не забудьте проверить, подключилось ли расширение:

О том, как установить популярное расширение ioncube, читайте в нашей инструкции

Установка расширений через apt, yum и pecl

Ниже описаны установки расширений для всех версий php — от установки зависимостей до подключения. Описание разделено на версию ОС и версию php: нативную (native) или альтернативную (alt). Будьте внимательны при установке расширений для альтернативной версии через pecl.

mcrypt

Во время установки на вопрос “libmcrypt prefix? [autodetect]” жмём Enter.

Источник

Установка PHP-расширений в Ubuntu для полноценной работы WordPress и плагинов

В большинстве статей по самостоятельной настройке веб-сервера опущен один очень важный момент — установка расширений для PHP, без которых тот же WordPress нормально работать не будет. Применительно к Вордпрессу список необходимых расширений PHP сильно зависит от того какие плагины Вы будете использовать, ниже будет приведен не полный список, но покрывающий 99% потребностей WordPress и достаточный для большинства случаев. Я установил на VPS Ubuntu 16.04 далее примеры команд для этой версии Линукс.

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

sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc php-mcrypt php-curl php-gd

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

sudo apt-get install php5-curl php5-gd php5-mbstring php5-mcrypt php5-xml php5-xmlrpc php5-mcrypt php5-curl php5-gd

Просмотреть установленные расширения можно командой:

sudo dpkg —list | grep php
После установки расширений может потребоваться перезапуск веб-сервера apache:

sudo /etc/init.d/apache2 restart

Список расширений PHP которые может использовать WordPress и его плагины:

Читайте также:  Установка драйверов под linux

php-mysql — нужно для работы с базами данных, как правило устанавливается автоматически вместе с PHP.
php-ctype — необходимо установить если получаете ошибку Fatal error: Call to undefined function ctype_digit() in /wp-admin/includes/file.php
php-dom — не обязательное, может понадобиться если у Вас Windows-хостинг
php-exif — для работы с мета-данными фотографий
php-gd — для обработки изображений
php-iconv — конвертация строки из одной кодировки в другую
php-json — для поддержки JSON
php-posix — используется в классе WP_Filesystem_Direct
php-mbstring — для обработки строк, для работы обязательно
php-simplexml — не обязательное
php-zip, php-zlib — для работы с архивами, если необходимо

Если Вы используете виртуальный хостинг и у Вас нет возможности самостоятельно управлять сервером и устанавливать необходимые программы и расширения, зайдите в панель управления хостингом, большинство из них предоставляют возможность активировать нужные для работы расширения PHP, например вот так выглядят настройки в Cpanel:

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

Источник

Настройка файла php.ini

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

Интерпретатор php может поставляться в виде модуля для Apache, выполнять скрипты из командной строки или в виде отдельного сервиса php-fpm. Эти сервисы отличаются своими возможностями, и предназначением, но для любого вида интерпретатора нужно задать базовые настройки, например, рабочая папка, включенные расширения, отображение ошибок и так далее. Все эти настройки задаются через файл php.ini. В этой инструкции мы рассмотрим как выполняется настройка файла php.ini в операционных системах Linux, хотя все информация подойдет и для Windows.

Если у вас еще не установлен интерпретатор языка программирования php, то вы можете ознакомиться со статьей установка lamp в Ubuntu 16.04.

Расположение и синтаксис php.ini

Для каждой версии интерпретатора конфигурационный файл php.ini находится в отдельной папке. Но все конфигурационные файлы находятся в папке /etc/php, например, /etc/php5:

Папка conf.d содержит общие настройки для различных расширений и модулей, они не будут нас сейчас интересовать. Более интересны следующие три папки — apache, cli и fpm. В них содержатся конфигурационные файлы php.ini для каждого из этих интерпретаторов.

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

Что касается синтаксиса файла, то он разделен на секции, сначала идет секция настройки php, которая разделена на подсекции в зависимости от типа настроек, дальше идут секции настройки разных модулей. Синтаксис самих настроек очень прост, он соответствует привычному синтаксису ini файлов. Строка начинается с имени настройки, затем следует знак равно, а за ним значение:

имя_настройки = значение_параметра

Символами [] обозначается имя секции, например, [PHP], а символ ; означает комментарий, он и все символы после него не читаются интерпретатором. А теперь рассмотрим как выполняется настройка php.ini и переберем самые важные параметры.

Настройка файла php.ini

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

sudo gedit /etc/php5/apache/php.ini

Сначала идет немного информации о самом файле в виде комментариев, затем интересующие нас настройки.

Читайте также:  Приложение для mac os swift

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

Настройка php 7 обычно начинается с конфигурации вывода ошибок. Все настройки вывода ошибок находятся в разделе Error handling and logging. По умолчанию вывод ошибок на экран во время выполнения скрипта отключен. Это сделано для того, чтобы пользователи не смогли увидеть ничего лишнего. Вместо этого, все ошибки записываются в лог файл. Если вы используете php на домашнем компьютере, то такие меры не нужны и вы можете сразу выводить все на экран:

Замените off на on. В php используются различные типы ошибок, например, критические, предупреждения, ошибки синтаксиса, с помощью строки error_reporting вы можете включить вывод только определенных типов ошибок:

Если нужно объединить несколько типов ошибок, то используйте символ &, а для отключения отображения поставьте перед типом знак

. Приведенный выше пример отображает все ошибки (E_ALL), кроме сообщений об устаревших функциях (E_DEPRECATED). Вы можете отключить все типы использовав 0:

Включите запись ошибок php в лог файл, если не выводите их на экран:

Чтобы не засорять лог однотипными сообщениями можно игнорировать повторяющиеся ошибки в пределах одного исполнения:

Ограничения ресурсов

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

По умолчанию максимальное время выполнения скрипта — 30 секунд, сделаем минуту:

Если указать 0, то скрипт может выполняться бесконечно. Вы также можете ограничить время, на протяжении которого скрипт будет загружать данные, 60 секунд:

Максимальное количество переменных в GET и POST:

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

Максимальный размер данных, передаваемых в POST запросе тоже ограничивается, размер по умолчанию — 8 Мегабайт:

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

С помощью директив disable_functions и disable_classes вы можете отключить использование в скриптах определенных функций или классов, например, это может быть полезно для веб-хостингов. В этом примере мы отключаем использование функции ini_set, которая позволяет менять настройки php из скрипта:

Директории по умолчанию

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

Папка с модулями php:

Папка для записи временных файлов:

Загрузка файлов

Для того чтобы пользователи могли загружать свои файлы на сервер, например, фото, нужно включить эту функцию в php:

Максимальный размер загружаемого файла:

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

Настройка php.ini практически завершена, нам остались лишь расширения.

Настройка расширений

Расширения позволяют очень сильно увеличить функциональность php. Например, благодаря расширениям вы можете использовать в своих скриптах базы данных mysql, postgresql, mysqli, sqlite, графическую библиотеку gd и многое другое. Все это включается в этом разделе.

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

extension=php_mysql.so
extension=php_mbstring.so
extension=php_pgsql.so

Обратите внимание, что для windows расширение будет иметь формат dll, но для linux нужно использовать so. В следующих секциях идет настройка каждого из расширений, но мы их рассматривать не будем потому что они обычно не требуют настройки.

Выводы

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

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

Источник

Оцените статью