Содержание

PHP: Инструкции по установке на Debian GNU/Linux

Change language: EnglishBrazilian PortugueseChinese (Simplified)FrenchGermanJapaneseRussianSpanishTurkishOther

Submit a Pull Request Report a Bug

Раздел содержит информацию и подсказки, относящиеся к установке PHP на » Debian GNU/Linux.

Внимание

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

Хотя и существует универсальная инструкция по установке PHP на Unix/Linux, в этом разделе мы рассмотрим особенности специфичные для Debian, такие как использование команд apt или aptitude. В рамках этого руководства обе эти команды рассматриваются как взаимозаменяемые.

Использование APT

Во первых, обратите внимание на то, что некоторые пакеты связаны:

libapache-mod-php нужен для интеграции с Apache 2, и php-pear с PEAR.

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

Пример #1 Пример установки Apache 2 на Debian

# apt install php-common libapache2-mod-php php-cli

APT автоматически установит модуль PHP для Apache 2 и все их зависимости и, затем, активирует их. Apache должен быть перезапущен для того, чтобы изменения вступили в силу. Например:

Пример #2 Остановка и запуск Apache после установки PHP

# /etc/init.d/apache2 stop
# /etc/init.d/apache2 start

Контроль конфигурации

Изначально, PHP устанавливается только с основными модулями ядра. Если вы хотите установить дополнительные модули, такие как MySQL, cURL, GD и т.д., это также можно сделать с помощью команды apt.

Пример #3 Способы получить список дополнительных пакетов PHP

# apt-cache search php
# apt search php | grep -i mysql
# aptitude search php

Будет выведен список большого числа пакетов, включая несколько специфичных, таких как php-cgi, php-cli and php-dev. Определите, какие вам нужны и установите с помощью

apt-get или aptitude. И, так как Debian производит проверку зависимостей, вам будет выведен запрос на их установку.

Пример #4 Установка PHP с MySQL и cURL

# apt install php-mysql php-curl

APT автоматически добавит необходимые строки в соответствующие php.ini, /etc/php/7.4/php.ini, /etc/php/7.4/conf.d/*.ini, и т.д. В зависимости от модуля, будут внесены записи типа extension=foo.so. В любом случае, чтобы эти изменения вступили в силу, необходимо будет перезапустить сервер веб-сервер.

Стандартные проблемы

  • Если скрипты PHP не разбираются веб-сервером, то скорее всего это означает, что PHP не был добавлен в конфигурацию веб-сервера. На Debian это обычно
    /etc/apache2/apache2.conf
    или похожий. Смотрите документацию Debian для выяснения подробностей.
  • Модуль, по-видимому, установлен, а его функции всё равно не распознаются. В таком случае убедитесь, что соответствующий ini-файл был загружен и/или веб-сервер был перезагружен после установки модуля.
  • Для установки пакетов в Debian существуют две основных команды (не считая стандартных вариантов Linux):
    apt
    и aptitude. Объяснения их синтаксиса, особенностей и отличий друг от друга выходит за рамки данного руководства.

add a note

User Contributed Notes 6 notes

up

down

61

thumbs at apache dot org

9 years ago

To refresh this document, perhaps it would be worth mentioning more modern methods to serve php content under apache httpd.

Specifically, the preferred method is now fastcgi, using either of those recipes:

(mod_fastcgi, httpd 2.

2)
http://wiki.apache.org/httpd/php-fastcgi

(mod_fcgid, httpd 2.2)
http://wiki.apache.org/httpd/php-fcgid

(mod_proxy_fcgi, httpd 2.4)
http://wiki.apache.org/httpd/PHP-FPM

While the legacy mod_php approach is still applicable for some older installations, the fastcgi method is much faster, and require much less RAM to operate, based on similar traffic patterns.

Thank you!

up

down

38

kearney dot taaffe at gmail dot com

4 years ago

Compiling PHP on Ubuntu boxes.

If you would like to compile PHP from source as opposed to relying on package maintainers, here's a list of packages, and commands you can run

STEP 1:
sudo apt-get install autoconf build-essential curl libtool \
  libssl-dev libcurl4-openssl-dev libxml2-dev libreadline7 \
  libreadline-dev libzip-dev libzip4 nginx openssl \
  pkg-config zlib1g-dev

So you don't overwrite any existing PHP installs on your system, install PHP in your home directory. Create a directory for the PHP binaries to live

    mkdir -p ~/bin/php7-latest/

STEP 2:
# download the latest PHP tarball, decompress it, then cd to the new directory.

STEP 3:
Configure PHP. Remove any options you don't need (like MySQL or Postgres (--with-pdo-pgsql))

./configure --prefix=$HOME/bin/php-latest \
    --enable-mysqlnd \
    --with-pdo-mysql \
    --with-pdo-mysql=mysqlnd \
    --with-pdo-pgsql=/usr/bin/pg_config \
    --enable-bcmath \
    --enable-fpm \
    --with-fpm-user=www-data \
    --with-fpm-group=www-data \
    --enable-mbstring \
    --enable-phpdbg \
    --enable-shmop \
    --enable-sockets \
    --enable-sysvmsg \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-zip \
    --with-libzip=/usr/lib/x86_64-linux-gnu \
    --with-zlib \
    --with-curl \

    --with-pear \
    --with-openssl \
    --enable-pcntl \
    --with-readline

STEP 4:
compile the binaries by typing: make

If no errors, install by typing: make install

STEP 5:
Copy the PHP. ini file to the install directory

    cp php.ini-development ~/bin/php-latest/lib/

STEP 6:

cd ~/bin/php-latest/etc;
mv php-fpm.conf.default php-fpm.conf
mv php-fpm.d/www.conf.default php-fpm.d/www.conf

STEP 7:
create symbolic links for your for your binary files

   cd ~/bin
   ln -s php-latest/bin/php php
   ln -s php-latest/bin/php-cgi php-cgi

   ln -s php-latest/bin/php-config php-config
   ln -s php-latest/bin/phpize phpize
   ln -s php-latest/bin/phar.phar phar
   ln -s php-latest/bin/pear pear
   ln -s php-latest/bin/phpdbg phpdbg
   ln -s php-latest/sbin/php-fpm php-fpm

STEP 8: link your local PHP to the php command. You will need to logout then log back in for php to switch to the local version instead of the installed version

# add this to .bashrc
if [ -d "$HOME/bin" ] ; then
  PATH="$HOME/bin:$PATH"
fi

STEP 9: Start PHP-FPM

    sudo ~/bin/php7/sbin/php-fpm

up

down

-16

marin at sagovac dot com

8 years ago

To install LAMP stack on Ubuntu (+Server) from 10. 04 you need first install taskel and then lamp-server for example:

Install taskel, follow terminal guides:
sudo apt-get install tasksel

Install LAMP stack package from Ubuntu repository:
sudo tasksel install lamp-server

up

down

-24

juraj at jurajsplayground dot com

13 years ago

On Ubuntu (since 7.04), rather do:
sudo tasksel install lamp-server

Details:
https://help.ubuntu.com/community/ApacheMySQLPHP

up

down

-27

John Fisher

15 years ago

With Apache2 and Php4 under Debian Sarge there is an extra configuration file :  /etc/apache2/sites-available/default
This file is not clearly documented, at least not for noobs, in Apache docs.

It overrides the conf file in the way you expect the /etc/apache2/conf. d/apache2-doc  to do according to the README.

Add ExecCGI to it to get rid of "Options ExecCGI is off in this directory"  errors.

up

down

-41

tranzbit at yahoo dot com

13 years ago

On Ubuntu:

sudo apt-get install apache2 php5 mysql-client-5.0 mysql-server-5.0 phpmyadmin libapache2-mod-php5 libapache2-mod-auth-mysql php5-mysql

then restart the computer/start mysql manually
From:
http://ubuntuforums.org/showthread.php?t=186492

add a note

Настройка PHP

Значения переменных выделены цветами:

  • Красный — параметры, значения которых не определены в конфигурационном файле PHP и получены непосредственно от самого интерпретатора PHP.
  • Зелёный — параметры, значения которых определены в глобальном конфигурационном файле PHP для администратора и в пользовательском для пользователя.
  • Синий — параметры, значения которых не определены.
  • Жёлтый — параметры, значения которых доступны пользователю только для чтения.

Изменение значений переменных


Чтобы изменить значение переменной:

  1. Под администратором перейдите в Настройки Настройки PHP  Расширенные настройки. Под пользователем перейдите в WWW PHP  Расширенные настройки

  2. Выделите переменную и нажмите Изменить.
  3. Укажите новое Значение переменной.

Глобальный конфигурационный файл настроек хранится в:

  • CentOS: /etc/php.ini для нативной версии PHP и в /opt/<версия PHP>/etc/php.ini для альтернативных версий.
  • Debian: для каждого режима работы PHP индивидуальный файл. /etc/php5/apache2/php.ini, /etc/php5/cgi/php.ini и/etc/php5/fpm/php.ini.

Пользовательские конфигурационные файлы хранятся в /var/www/<директория php-bin версии PHP>/<владелец WWW-домена>/php.ini. Настройки, которые изменял пользователь, хранятся в этой же директории в конфигурационном файле изменённых параметров .php.ini.

Чтобы изменить пользовательские конфигурационные файлы вручную, отредактируйте файл php.ini и продублируйте изменения в файле /var/www/<владелец WWW-домена>/data/<директория php-bin версии PHP>/.php.ini.

Шаблон создания конфигурационных файлов

Файл /usr/local/mgr5/etc/templates/php.ini используется как шаблон создания пользовательских конфигурационных файлов. При создании нового пользователя настройки PHP для него изменяются в соответствии с шаблоном. По умолчанию шаблон содержит строки:

Шаблон пользовательских конфигурационных файлов

session.save_path = "$HOMEDIR/bin-tmp/"
upload_tmp_dir = "$HOMEDIR/bin-tmp/"
sendmail_path = /usr/sbin/sendmail -t -i -f webmaster@example. com

BASH

Пояснения

$HOMEDIR — макрос, который при создании пользователя заменяется на его домашнюю директорию.

Применение настроек для режимов работы PHP «CGI» и «FastCGI (Apache)»

Если пользователь ISPmanager сохраняет изменения настроек PHP:

  1. Изменённые значения переменных записываются в конфигурационный файл изменённых параметров.
  2. Содержимое пользовательского конфигурационного файла полностью заменяется на содержимое глобального файла.
  3. Значения из конфигурационного файла изменённых параметров заменяют соответствующие значения в пользовательском конфигурационном файле.

Если администратор ISPmanager сохраняет изменения настроек PHP:

  1. Значения записываются в глобальный конфигурационный файл.
  2. Для каждого пользователя ISPmanager:
    1. Содержимое пользовательского конфигурационного файла полностью заменяется на содержимое глобального файла.
    2. Значения из конфигурационного файла изменённых параметров пользователя заменяют соответствующие значения в пользовательском конфигурационном файле.

Применение настроек для режима работы PHP «FastCGI (Nginx + PHP-FPM)»

Если пользователь ISPmanager сохраняет изменения настроек PHP, изменённые значения переменных записываются в конфигурационный файл PHP-FPM пользователя соответствующей версии PHP.

Если администратор ISPmanager сохраняет изменения настроек PHP, изменённые значения переменных записываются в глобальный конфигурационный файл PHP-FPM соответствующей версии PHP.

Если настройки PHP изменены для конкретного сайта, изменённые значения переменных сохраняются в директории:

  • для альтернативных версий PHP —/opt/php<version>/etc/php-fpm.d/;

    Пояснения

    <version> — версия PHP. Например, для PHP 5.4 конфигурационные файлы сайта находится в директории /opt/php54/etc/php-fpm.d/.

  • для нативных версий PHP в ОС CentOS — /etc/php-fpm.d/;

  • для нативных версий PHP в ОС Ubuntu, Debian — /etc/php/<version>/fpm/.

    Пояснения

    <version> — версия PHP. Например, для PHP 7.0 конфигурационные файлы сайта находится в директории /etc/php/7.0/fpm/.

Чтобы сохранить настройки PHP для конкретного сайта, панель управления создаёт поддиректории:

/user.d — содержит конфигурационные файлы PHP с настройками пользователя;

/site.d — содержит конфигурационные файлы PHP с настройками для сайта;

/pool.d — содержит конфигурационные файлы пула PHP-FPM.

Чтобы панель управления не создавала отдельные настройки PHP-FPM для каждого сайта, добавьте в конфигурационный файл ISPmanager строку:

Option DisableFpmPerSite

CODE

Применение настроек для режима работы PHP «модуль Apache»

Пользователь не имеет доступа к изменению настроек PHP для этого режима.

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

Первоначальная настройка PHP


Чтобы упростить первоначальную настройку PHP основные параметры сгруппированы:

  1. Перейдите в Настройки Настройки PHP  Расширенные настройки Основные.
  2. Выберите Временную зону, которая будет использоваться по умолчанию всеми функциями даты и времени. Указывается в переменной «date.timezone».
  3. Укажите Время выполнения PHP-скрипта в секундах. Если за это время загрузка скрипта не происходит, его работа завершается. Указывается в переменной «max_execution_time».
  4. Укажите ограничение на Макс. размер запроса в МиБ. Оно определяет максимально допустимый размер данных, отправляемых методом POST. Указывается в переменной «post_max_size».
  5. Укажите ограничение на Макс. размер файлов в МиБ. Оно определяет максимальный размер загружаемых с помощью PHP-скриптов файлов. Указывается в переменной «upload_max_filesize».
  6. Укажите Лимит памяти в МиБ. Он определяет максимальный объём оперативной памяти, который может использовать PHP-скрипт. Указывается в переменной «memory_limit».
  7. Чтобы выводить сообщения об ошибках вместе с остальным выводом PHP-скрипта, включите опцию display_errors. Рекомендуем использовать эту опцию только для отладки скриптов и отключать её после завершения работы.
  8. Чтобы ISPmanager вёл журнал работы PHP-скриптов, включите опцию log_errors. Настройте список ошибок, записываемых в журнал. Для этого включите опцию Вывод всех ошибок и в поле Выбор флагов для игнорирования при выводе ошибок выберите исключения, которые не будут записываться.

    Пояснения

    В конфигурационный файл php.ini добавляются строки вида:

    Конфигурационный файл php.ini

    error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT.

    BASH

    Пояснения

    E_ALL — включает вывод всех ошибок.

    & ~E_DEPRECATED & ~E_STRICT — исключаемые ошибки, указанные через «& ~».

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

    Пояснения

    В конфигурационный файл php.ini добавятся строки вида:

    Конфигурационный файл php.ini

    error_reporting = E_ERROR | E_NOTIC

    BASH

    Пояснения

    E_ERROR | E_NOTIC — журналируемые ошибки, указанные через » | «.

Восстановление значения переменной


Чтобы восстановить значение переменной под администратором:

  1. Нажмите Настройки Настройки PHP  Расширенные настройки Восстановить.
  2. Изменённое значение удаляется из глобального конфигурационного файла PHP.
  3. Для каждого пользователя ISPmanager:
    1. Содержимое пользовательского конфигурационного файла полностью заменяется на содержимое глобального файла.
    2. Значения из конфигурационного файла изменённых параметров пользователя заменяют соответствующие значения в пользовательском конфигурационном файле.

Чтобы восстановить значение переменной под пользователем:

  1. Нажмите WWW → PHPРасширенные настройкиВосстановить.
  2. Изменённое значение удаляется из пользовательского конфигурационного файла PHP.

Как установить PHP на Linux — Блог HTML Academy

Настроить рабочее окружение для разработки на PHP в Linux возможно несколькими способами. Рассмотрим один из наиболее быстрых: настройка связки PHP и nginx.

Запустите приложение «Терминал». Ярлык на запуск доступен в менеджере приложений. Сначала обновим локальный индекс пакетов APT.

sudo apt-get update

Настройка веб-сервера

Для работы с PHP нам потребуется веб-сервер. В репозиториях доступно несколько популярных веб-серверов, мы отдадим предпочтение nginx. Он хорошо работает и легко настраивается.

sudo apt-get install nginx

Затем запустим nginx. Запомните эту команду. Она пригодится для добавления новых виртуальных хостов.

sudo service nginx start

nginx установлен и теперь нам требуется выполнить базовое конфигурирование. Наша цель — создать новый виртуальный хост, который будет доступен по адресу yourproject.local, где вместо yourproject может быть название вашего проекта.

Например: doingsdone.local, yeticave.local.

Обратите внимание, имена доменов не могут содержать пробелы. Определитесь с именем домена (далее «имя хоста для проекта»). Мы будем ориентироваться на проект yeticave.local, поэтому именно так будем называть конфигурационный файл. Перейдите в директорию sites-available. В этой директории nginx хранит конфигурационные файлы всех виртуальных хостов.

cd /etc/nginx/sites-available

Чтобы увидеть список всех доступных виртуальных хостов, выведите содержимое каталога:

ls -all

Название конфигурационного файла должно совпадать с именем хоста. Поскольку мы планируем сделать конфигурационный файл для хоста yeticave.local, нам потребуется создать файл yeticave.local. Сделаем это:

sudo touch yeticave.local

Файл готов, теперь откроем его в консольном редакторе nano (установлен по умолчанию в большинстве современных дистрибутивов) и опишем минимальную конфигурацию.

sudo nano yeticave.local

Скопируйте в открытый файл yeticave.local ниже приведённый конфигурационный файл. Информацию обо всех непонятных строках вы сможете почерпнуть из официальной документации к nginx.

server {
    # Наш проект будет доступен на 80 порту 
        listen 80;
      # Имя виртуального хоста
        server_name yeticave.local;
     # Корневая директория проекта. 
        root  /home/administrator/www/yeticave.local;

    # Имя индексного файла.
        index index.php;
       # Настройки отдачи файлов
       location ~* \. (.+\.php)(/.+)$;

        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
                deny all;
        }
}

Обратите внимание на номер версии PHP. На момент написания статьи в репозиториях Ubuntu доступна версия 8.1. Если вы пользуетесь более старой версией ОС, то не забудьте обновить номер версии на свой.

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

Для сохранения изменений в файле нажмите комбинацию клавиш ctrl+o. Затем закройте редактор nano сочетанием клавиш ctrl+x.

Протестируем созданный конфигурационный файл на наличие ошибок:

sudo nginx -t

Мы создали конфигурационный файл. Теперь активируем только что созданный виртуальный хост. Для этого перейдём в директорию sites-enabled и создадим в ней символическую ссылку на наш конфигурационный файл.

cd /etc/nginx/sites-enabled/

sudo ln -s /etc/nginx/sites-available/yeticave.local

Если на текущем шаге попытаться открыть браузер и ввести в адресной строке http://yeticave.local, то ничего, кроме ошибки «Сервер не найден», мы не увидим. Исправим проблему добавлением новой записи в hosts:

sudo nano /etc/hosts

В самом начале файла добавьте строку:

127.0.0.1 yeticave.local

Обратите внимание, мы пишем только доменное имя без указания протокола (http). Сохраняем изменения ctrl+o и закрываем редактор nano сочетанием клавиш ctrl+ x.

Установка PHP

Последним компонентом в настройке рабочего окружения станет PHP.

Для начала давайте добавим новый репозиторий, который понадобится для установки свежей версии PHP. Этот репозиторий является официальным источником PHP-пакетов для Debian и Ubuntu:

sudo add-apt-repository ppa:ondrej/php

В окне терминала введите команду для установки php-fpm из репозитория.

sudo apt install php-fpm php-cli php-common php-json php-mysql php-phpdbg php-mbstring php-imap php-dev php-curl php-xdebug

Важно: обязательно обратите внимание на версию PHP. В зависимости от дистрибутива она может отличаться. Если номер версии отличается от той, что мы указали в конфигурационном файле yeticave.local, то необходимо её исправить.

Настройка xdebug

Вводим команду редактирования файла:

sudo nano /etc/php/8.1/mods-available/xdebug.ini

Добавляем в файл конфигурацию для xdebug:

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.var_display_max_depth = -1
xdebug.var_display_max_children = -1
xdebug. var_display_max_data = -1
xdebug.idekey = "PHPSTORM":

Сохраняем изменения ctrl+o и закрываем редактор nano ctrl+x.

Внесём изменения в конфигурационный файл php, чтобы он выводил все ошибки в браузер, а не только в лог-файл.

sudo nano /etc/php/8.1/fpm/php.ini

Найдём, раскомментируем (уберём знак «;» или исправим значение) и установим значения для строк:

display_errors = On
display_startup_errors = On
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

Сохраняем изменения ctrl+o, закрываем редактор ctrl+x.

Запускаем php-fpm. Выполняем команды:

sudo service php8.1-fpm stop
sudo service php8.1-fpm start

Размещаем файлы проекта в директорию проекта. Директорию проекта вы указали в секции root, конфигурационного файла yeticave.local. Выставляем права:

sudo chmod -R 755 /home/administrator/www/yeticave. local

Открываем браузер и пробуем обратиться к http://yeticave.local.

Всё готово!

Хотите разобраться в языке с нуля?

Познакомьтесь с PHP на интерактивном тренажёре.

Попробовать

Тюнинг PHP-FPM. Введение / Хабр

БОНУС: в нашем подкасте мы обсудили эту тему с экспертом, членом сообщества PHP программистов: https://share.transistor.fm/s/6a8637ba

PHP-FPM (или FastCGI Process Manager) имеет по сравнению с mod_php несколько преимуществ, из которых самые очевидные — он более гибок в настройке, и в настоящее время сообщество отдает предпочтение именно этому режиму работы PHP. Однако, если вы используете дефолтную конфигурацию от вашего диспетчера пакетов, то, скорее всего, вы не получите максимум выгоды от его использования.

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

PHP-FPM может использовать один из трех режимов управления процессами:

  • static

  • dynamic

  • ondemand

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

Static

Static гарантирует, что обработка пользовательских запросов всегда доступна фиксированному количеству дочерних процессов. Оно устанавливается с помощью pm.max_children. В этом режиме запросам не нужно ждать запуска новых процессов, что делает его самым быстрым подходом.

Предположим, что вы выбрали static конфигурацию с постоянно доступными 10 дочерними процессами, тогда вам нужно настроить ее в /etc/php/7.2/fpm/pool.d/www.conf (при условии, что вы используете дефолтную конфигурацию Debian/Ubunut для PHP-FPM) следующим образом:

pm = static pm.max_children = 10 

Чтобы проверить результат внесенных изменений запустите pstree -c -H <PHP-FPM process id> -S <PHP-FPM process id> после перезапуска PHP-FPM. Вы увидите, как в примере ниже, что доступно десять процессов.

php-fpm7.2-+-php-fpm7.2 |-php-fpm7.2

|-php-fpm7.2 |-php-fpm7.2 |-php-fpm7.2 |-php-fpm7.2 |-php-fpm7.2 |-php-fpm7.2 |-php-fpm7.2 `-php-fpm7.2

Dynamic

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

Данная конфигурация задействует пять параметров:

  • pm.min_spare_servers: минимальное количество бездействующих дочерних процессов, которые создает PHP-FPM. Если доступно меньше, чем это число, то создаются другие процессы.

  • pm.max_spare_servers: максимальное количество бездействующих дочерних процессов, которые создает PHP-FPM. Если доступно больше дочерних процессов, чем здесь указано, некоторые из них будут “убиты”.

Теперь самое интересное; как рассчитать значения для каждой настройки? Sebastian Buckpesch, предлагает следующую формулу:

Настройка

Значение

max_children

(Общий объем оперативной памяти — Память используемая для Linux, базы данных и т.д.) / Размер процесса

start_servers

Количество ядер процессора х 4

min_spare_servers

Количество ядер процессора х 2

max_spare_servers

То же, что и для start_servers

Мы также должны установить параметр pm.process_idle_timeout — количество секунд, по истечении которых бездействующий процесс будет убит.

Допустим, у нашего сервера два процессора, каждый по четыре ядра, и 8 ГБ оперативной памяти. Если предположить, что Linux и связанные с ним демоны используют около 2 ГБ (для получения более конкретного значения можно использовать free -hl), то у нас останется около 6192 МБ.

Как узнать, сколько памяти использует каждый процесс? Чтобы вычислить это, есть скрипт Python под названием ps_mem.py. После его запуска с помощью sudo python ps_mem.py | grep php-fpm, вы получите следующий результат:

28.4 MiB +  33.8 MiB =  62.2 MiB    php-fpm7.2 (11) 

Первый столбец — это собственная память. Второй столбец — общая память. Третий столбец — это общий объем используемой оперативной памяти. Четвертый столбец — это наименование процесса.

Исходя из вышеизложенного, понятно, что размер процесса составляет 62,2 МБ. Итак, введя все эти значения в нашу формулу, мы получим следующий результат:

# Round the result up. (8192 - 2000) / 62.2 

Исходя из этого, мы получаем следующие значения для наших настроек:

Настройка

Значение

max_children

100

start_servers

32

min_spare_servers

16

max_spare_servers

32

Мы оставим pm. process_idle_timeout равным значению по умолчанию в 10s. Предположим, что нас устраивают эти настройки. Мы бы выполнили их конфигурацию следующим образом:

pm = dynamic pm.max_children = 100 pm.start_servers = 32 pm.min_spare_servers = 16 pm.max_spare_servers = 32 pm.max_requests = 200 

Для отслеживания количества памяти, которое использует ваше приложение, вы можете регулярно использовать инструменты мониторинга памяти. Для PHP доступно несколько опций, включая php-memprof и Tideways.

ondemand

ondemand заставляет PHP-FPM форкать процессы при получении запросов. Чтобы настроить PHP-FPM для его использования, нам нужно установить pm в режим dynamic и предоставить значения для следующих настроек:

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

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

pm = ondemand pm.max_children = 100 pm.process_idle_timeout = 10s pm.max_requests = 200 

Какая конфигурация подойдет вам?

Если честно, ответ на этот вопрос: «смотреть надо по ситуации», поскольку это всегда зависит от типа приложений, которые вы запускаете. Однако все же есть несколько рекомендаций относительно того, какую конфигурацию выбрать.

Сайт с низким трафиком

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

Сайт с высоким трафиком

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

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

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

В режиме dynamic все может быть не так плохо, все зависит от конфигурации. Однако вы можете в итоге получить конфигурацию, которая по сути копирует static.

Использование нескольких пулов для фронтенда/бэкенда

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

  • Бэкенд, где администраторы управляют магазином (например, добавляют/удаляют продукты, категории и теги, а также проверяют рейтинги).

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

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

Добавьте в /etc/php/7.2/fpm/pool.d/www.conf следующую конфигурацию:

; frontend [frontend] listen = /var/run/php-fpm-frontend.sock user = www-data group = www-data listen.owner = www-data listen.group = www-data pm = static pm.max_children = 5
; backend [backend] listen = /var/run/php-fpm-backend.sock user = www-data group = www-data listen.owner = www-data listen.group = www-data pm = ondemand pm.max_children = 5 pm.process_idle_timeout = 10s

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

Пул фронтенда использует static конфигурацию с небольшим максимальным количеством дочерних процессов. (.+.php)(/.+)$; fastcgi_pass $fpm_socket; fastcgi_index index.php; include fastcgi.conf; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } }

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

В заключение

Что ж, это было быстрое введение в тюнинг PHP-FPM в целях повышения производительности. Мы рассмотрели три различных режима работы менеджера процессов, их настройки и обсудили, когда использование каждого из режимов уместно. Мы закончили рассмотрением юзкейса с пулами. Спасибо за внимание!


Материал подготовлен в рамках курса «PHP Developer. Professional». Если вам интересно узнать подробнее о формате обучения и программе, познакомиться с преподавателем курса — приглашаем на день открытых дверей онлайн. Регистрация здесь.

Можно ли устанавливать собственные настройки php.ini? — Вопросы и ответы — Джино

Можно ли устанавливать собственные настройки php.ini? — Вопросы и ответы — Джино

У нас PHP работает как модуль Apache, и поэтому невозможно использовать свой php.ini. Для использования собственного php.ini вы можете запустить PHP в режиме CGI.

Однако большую часть настроек можно изменить, не запуская PHP в режиме CGI — с помощью .htaccess и через раздел «Хостинг / Управление / Настройки веб сервера / Настройки PHP» в контрольной панели вашего аккаунта.

  • Что такое PHP?
  • Какая версия PHP работает на хостинге?
  • Можно ли на разных сайтах использовать PHP разных версий?
  • Как узнать текущие установки PHP?
  • Какой путь к исполняемому файлу интерпретатора PHP?
  • PHP установлен как модуль Apache или как CGI?
  • PHP на вашем хостинге работает в режиме Safe Mode?
  • Как заставить html-страницы обрабатывать PHP код?
  • Установлен ли у вас модуль РНР сURL?
  • Как выключить отображение ошибок PHP?
  • Какой размер оперативной памяти используется под PHP-приложения?
  • Как увеличить объем загружаемого файла через скрипты?
  • Почему вместо результатов работы PHP-скрипта я вижу лишь пустую белую страницу?
  • Почему вместо результатов работы PHP-скрипта скачивается файл index. php?
  • Какие директивы php.ini можно настроить с помощью .htaccess?
  • Как включить параметр allow_call_time_pass_reference?
  • Как включить параметр register_globals?
  • Возможно ли использовать функции для работы с IMAP в PHP?
  • У вас установлен модуль ionCube?
  • Как изменить часовой пояс на сайте?
  • Как запустить PHP в режиме CGI?

Пример: Как подключить SSH

Нашли ошибку в тексте? Выделите ее и нажмите Ctrl + Enter

+7 495 229-30-31 Москва

+7 812 407-17-11 Санкт-Петербург

+7 343 288-50-31 Екатеринбург

Показать все

© Джино, 2003–2022. «Джино» является зарегистрированным товарным знаком.
Лицензия на телематические услуги связи № 150549 от 09.03.2017.
Правовая информацияПолитика конфиденциальности

Карта сайта

PHP: введение и настройка среды


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

Зачем изучать PHP?

PHP возник как небольшой проект с открытым исходным кодом. Он развивался по мере того, как все больше людей понимали, насколько он полезен. Расмус Лердорф выпустил первую версию PHP еще в 1994 году.

PHP необходим студентам и начинающим программистам. Особенно он полезен специалистам, занятым в сфере веб-разработки. Перечислим ключевые преимущества изучения PHP:

  • PHP  —  это серверный язык скриптов, встроенный в HTML. Он используется для управления динамическим контентом, базами данных, отслеживания сеансов и даже создания целых сайтов электронной коммерции.
  • PHP интегрирован с рядом популярных баз данных, включая MySQL, PostgreSQL, Oracle, Sybase, Informix и Microsoft SQL Server.
  • PHP поразительно оперативен в своем исполнении, особенно когда скомпилирован как модуль Apache на стороне Unix. Сервер MySQL после запуска выполняет за рекордно короткое время даже очень сложные запросы с огромными наборами результатов.
  • PHP поддерживает большое количество основных протоколов, таких как POP3, IMAP и LDAP. В PHP4 добавлена поддержка Java и архитектуры распределенных объектов (COM и CORBA), что впервые сделало возможным многоуровневую разработку.
  • PHP лоялен: этот язык отличается большой степенью снисходительности к погрешностям пользователей.
  • Синтаксис PHP похож на C.
Характеристики PHP

Широкое практическое применение PHP обусловили пять важных характеристик этого языка:

  • простота;
  • эффективность;
  • безопасность;
  • гибкость;
  • доступность.
Скрипт “Hello, World” на PHP

Чтобы получить представление о PHP, начнем с простых PHP-скриптов. Создадим “Hello, World!”.

Как упоминалось ранее, PHP встроен в HTML. Это означает, что в стандартном HTML (или XHTML, если вы продвинутый программист) будут такие операторы PHP:

<html>
   
   <head>
      <title>Hello World</title>
   </head>
   
   <body>
      <?php echo "Hello, World!";?>
   </body>
</html>

Результат:

Hello, World!

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

Весь PHP-код должен быть включен в один из трех специальных тегов разметки, которые распознаются парсером PHP:

<?php PHP code goes here ?>
<?    PHP code goes here ?>
<script language = "php"> Здесь помещается PHP-код </script>

Наиболее распространенным тегом является <?php…?>, поэтому мы использовали его в нашем руководстве.

Возможности PHP

Как упоминалось ранее, PHP является одним из наиболее широко используемых языков в Интернете. Вот основные сферы его применения:

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

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


Настройка среды PHP

Чтобы разрабатывать и запускать веб-страницы на PHP, убедитесь в том, что на вашем компьютере установлены три основных компонента:

  • Веб-сервер: PHP работает практически со всеми веб-серверами, включая Internet Information Server (IIS) от Microsoft, но чаще всего используется свободно распространяемый сервер Apache. Скачать Apache бесплатно можно здесь  —  https://httpd.apache.org/download.cgi.
  • База данных: PHP работает практически со всеми базами данных, включая Oracle и Sybase, но чаще всего используется свободно распространяемая база данных MySQL. Скачать MySQL бесплатно можно здесь  —  https://www.mysql.com/downloads/.
  • Парсер PHP: для обработки инструкций PHP-скрипта необходимо установить парсер для генерации HTML-вывода, который может быть передан в веб-браузер. В этом руководстве вы узнаете, как установить парсер PHP на свой компьютер.
Установка парсера PHP

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

Введите следующий адрес в адресную строку браузера: http://127.0.0.1/info.php

Если откроется страница с информацией об установке PHP, значит, PHP и веб-сервер установлены правильно. Иначе вам необходимо установить PHP на компьютер, следуя инструкции на сайте https://www. php.net/manual/ru/install.php

Настройка Apache

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

Конфигурация файла PHP.INI

Файл конфигурации PHP — php.ini — является завершающим и наиболее действенным шагом для настройки функциональности PHP.

Конфигурация IIS для Windows

Для настройки IIS на компьютере с установленной системой Windows обратитесь к справочному руководству по IIS, поставляемому вместе с IIS: https://docs.microsoft.com/ru-ru/iis-administration/getting-started

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

  • Основы синтаксиса PHP
  • Как находить уязвимости в коде на PHP?
  • PHP 8.1 уже обещает стать одним из лучших релизов

Читайте нас в Telegram, VK и Яндекс.Дзен

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

Установка — 4.x

У CakePHP есть несколько системных требований:

  • HTTP-сервер. Например: Апач. Наличие mod_rewrite предпочтительнее, но ни в коем случае не требуется. Вы также можете использовать nginx или Microsoft IIS, если хотите.

  • Минимум PHP 7.4 (поддерживается 8.1 ).

  • mbstring Расширение PHP

  • международное расширение PHP

  • PHP-расширение SimpleXML

  • Расширение PDO PHP

Примечание

В XAMPP включено расширение intl, но вы должны раскомментировать extension=php_intl.dll (или extension=intl ) в php.ini и перезапустить сервер через панель управления XAMPP.

В WAMP расширение intl по умолчанию «активировано», но не работает. Чтобы это работало, вам нужно перейти в папку php (по умолчанию) C:\wamp\bin\php\php{version} , скопируйте все файлы, которые выглядят как icu*.dll и вставьте их в каталог apache bin C:\wamp\bin\apache\apache{версия}\bin . Затем перезапустите все службы и должно быть нормально.

Хотя ядро ​​базы данных не требуется, мы полагаем, что большинство приложений использовать один. CakePHP поддерживает различные механизмы хранения баз данных:

  • MySQL (5.6 или выше)

  • MariaDB (5.6 или выше)

  • PostgreSQL (9.4 или выше)

  • Microsoft SQL Server (2012 или выше)

  • SQLite 3

База данных Oracle поддерживается через Драйвер для базы данных Oracle плагин сообщества.

Примечание

Все встроенные драйверы требуют PDO. Вы должны убедиться, что у вас есть правильный Установлены расширения PDO.

Установка CakePHP

Перед запуском убедитесь, что ваша версия PHP обновлена:

 php -v
 

У вас должен быть PHP 7.4 (CLI) или выше. Версия PHP вашего веб-сервера также должна быть 7.4 или выше. та же версия, которую использует ваш интерфейс командной строки (CLI).

Установка Композитора

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

  • Установка Composer на Linux и macOS

    1. Запустите сценарий установки, как описано в официальная документация Composer и следуйте инструкциям по установке Composer.

    2. Выполните следующую команду, чтобы переместить composer.phar в каталог что на вашем пути:

       мв composer.phar /usr/local/bin/composer
       
  • Установка Composer в Windows

    Для систем Windows можно загрузить установщик Composer для Windows. здесь. Дальше Инструкции по установке Composer для Windows можно найти в README здесь.

Создать проект CakePHP

Вы можете создать новое приложение CakePHP, используя композитор create-project команда:

 composer create-project --prefer-dist cakephp/app:~4.0 my_app_name
 

После того, как Composer завершит загрузку скелета приложения и ядра CakePHP библиотеку, у вас должно быть работающее приложение CakePHP, установленное через Композитор. Не забудьте сохранить файлы composer.json и composer.lock вместе с остальная часть вашего исходного кода.

Теперь вы можете посетить путь, по которому вы установили приложение CakePHP, и см. домашнюю страницу по умолчанию. Чтобы изменить содержимое этой страницы, отредактируйте шаблонов/страниц/home.php .

Несмотря на то, что Composer является рекомендуемым методом установки, существуют предустановленные загрузки доступны на Гитхаб. Эти загрузки содержат скелет приложения со всеми установленными пакетами поставщиков. Также он включает в себя 94.0 до также получите последние стабильные второстепенные выпуски ветки 4.x .

Установка с использованием печи

Еще один быстрый способ установить CakePHP — через Oven. Это небольшой PHP-скрипт, который проверяет необходимые системные требования, и создает новое приложение CakePHP.

Примечание

ВАЖНО! Это не сценарий развертывания. Он призван помочь разработчикам установите CakePHP в первый раз и настройте среду разработки быстро. В производственной среде следует учитывать несколько других факторов, таких как права доступа к файлам, конфигурация виртуального хоста и т. д.

Разрешения

CakePHP использует каталог tmp для ряда различных операций. Описания моделей, кешированные представления и информация о сеансе — это лишь некоторые из них. Примеры. Каталог logs используется для записи файлов журнала по умолчанию. FileLog движок.

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

Одна из распространенных проблем заключается в том, что регистрирует и tmp каталогов и подкаталогов. должен быть доступен для записи как веб-серверу, так и пользователю командной строки. В UNIX системе, если пользователь вашего веб-сервера отличается от пользователя вашей командной строки, вы может запускать следующие команды из каталога вашего приложения только один раз в вашем project, чтобы убедиться, что разрешения будут настроены правильно:

 HTTPDUSER=`ps вспомогательный | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v корень | голова -1 | вырезать -d\ -f1`
setfacl -R -m u:${HTTPDUSER}:rwx tmp
setfacl -R -d -m u:${HTTPDUSER}:rwx tmp
setfacl -R -m u:${HTTPDUSER}: журналы rwx
setfacl -R -d -m u:${HTTPDUSER}: журналы rwx
 

Чтобы использовать инструменты консоли CakePHP, вам необходимо убедиться, что Файл bin/cake является исполняемым. В *nix или macOS вы можете выполнить:

 chmod +x корзина/торт
 

В Windows Файл .bat уже должен быть исполняемым. Если вы используете Vagrant или любой другой виртуализированной среде любые общие каталоги должны совместно использовать с разрешениями на выполнение (пожалуйста, обратитесь к вашему виртуализированному документацию среды о том, как это сделать).

Если по какой-либо причине вы не можете изменить разрешения bin/cake файл, вы можете запустить консоль CakePHP с:

 php-bin/cake.php
 

Сервер разработки

Установка для разработки — это самый быстрый способ установить CakePHP. В этом Например, мы используем консоль CakePHP для запуска встроенного веб-сервера PHP, который сделает ваше приложение доступным в http://хост:порт . Из приложения каталог, выполнить:

 сервер корзин/тортов
 

По умолчанию, без каких-либо аргументов, это будет обслуживать ваше приложение в http://локальный:8765/.

Если есть конфликт с localhost или портом 8765, вы можете сказать консоль CakePHP для запуска веб-сервера на определенном хосте и/или порту используя следующие аргументы:

 сервер корзины/торта -H 192.168.13.37 -p 5673
 

Это будет обслуживать ваше приложение в http://192.168.13.37:5673/ .

Вот оно! Ваше приложение CakePHP запущено и работает без необходимости настроить веб-сервер.

Примечание

Попробуйте bin/cake server -H 0.0.0.0 , если сервер недоступен с других хостов.

Предупреждение

Сервер разработки никогда не должен использоваться в производственной среде. Он предназначен только в качестве базового сервера разработки.

Если вы предпочитаете использовать настоящий веб-сервер, у вас должна быть возможность переместить ваш CakePHP install (включая скрытые файлы) внутри корневого каталога вашего веб-сервера. Ты затем вы сможете указать веб-браузеру каталог, в который вы переместили файлы в и увидеть ваше приложение в действии.

Производство

Производственная установка — это более гибкий способ настройки CakePHP. Используя это Метод позволяет всему домену действовать как единое приложение CakePHP. Этот пример поможет вам установить CakePHP в любом месте вашей файловой системы и сделать его доступен на http://www. example.com. Обратите внимание, что для этой установки может потребоваться права на изменение DocumentRoot на веб-серверах Apache.

После установки приложения одним из указанных выше способов в каталог по вашему выбору — мы предполагаем, что вы выбрали /cake_install — ваш производственная установка будет выглядеть в файловой системе так:

 /cake_install/
    мусорное ведро /
    конфиг/
    журналы/
    плагины/
    Ресурсы/
    источник/
    шаблоны/
    тесты/
    температура/
    продавец/
    webroot/ (этот каталог установлен как DocumentRoot)
    .gitignore
    .htaccess
    .travis.yml
    композитор.json
    index.php
    phpunit.xml.dist
    README.md
 

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

 DocumentRoot /cake_install/webroot
 

Если ваш веб-сервер настроен правильно, теперь вы должны найти свой CakePHP Приложение доступно по адресу http://www.example. com.

Зажги это

Хорошо, давайте посмотрим на CakePHP в действии. В зависимости от того, какую установку вы использовали, должен указывать ваш браузер на http://example.com/ или http://localhost:8765/. В на этом этапе вам будет представлен домашний каталог CakePHP по умолчанию и сообщение о том, что сообщает вам статус вашего текущего подключения к базе данных.

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

Перезапись URL

Апач

В то время как CakePHP создан для работы с mod_rewrite из коробки — и обычно делает — мы заметили, что некоторым пользователям трудно заставить все играть хорошо на их системах.

Вот несколько вещей, которые вы можете попробовать, чтобы заставить его работать правильно. Первый взгляд на ваш httpd.conf. (Убедитесь, что вы редактируете системный httpd.conf, а не httpd.conf для конкретного пользователя или сайта)

Эти файлы могут различаться в разных дистрибутивах и версиях Apache. Ты также можете взглянуть на https://cwiki.apache.org/confluence/display/httpd/DistrosDefaultLayout для дальнейшая информация.

  1. Убедитесь, что разрешено переопределение .htaccess и установлен параметр AllowOverride to All для правильного DocumentRoot. Вы должны увидеть что-то похожее на:

     # Каждый каталог, к которому имеет доступ Apache, может быть настроен с учетом
    # для каких сервисов и функций разрешены и/или отключены в этом
    # каталог (и его подкаталоги).
    #
    # Во-первых, мы настраиваем «по умолчанию» на очень ограниченный набор
    # Особенности.
    <Каталог />
        Параметры
        Разрешить переопределить все
    # Отказать в заказе, разрешить
    # Запретить от всех
    
     
  2. Убедитесь, что вы правильно загружаете mod_rewrite. Вы должны увидеть что-то нравится:

     LoadModule rewrite_module libexec/apache2/mod_rewrite.so
     

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

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

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

  3. Убедитесь, что ваша копия CakePHP получена из раздела загрузок на сайте. или наш репозиторий Git, и был правильно распакован, проверив наличие файлы .htaccess. 9index.php [Л]

    Если на вашем сайте CakePHP все еще есть проблемы с mod_rewrite, вы можете попробуйте изменить настройки виртуальных хостов. В Ubuntu отредактируйте файл /etc/apache2/sites-available/default (расположение зависит от дистрибутива). В этом файле убедитесь, что AllowOverride None изменено на AllowOverride All , поэтому у вас есть:

     <Каталог />
        Параметры
        Разрешить переопределить все
    
    <Каталог /var/www>
        Параметры
        Разрешить переопределить все
        Заказать Разрешить, Запретить
        Разрешить от всех
    
     

    В macOS другим решением является использование инструмента virtualhostx для создания виртуала Host, чтобы указать на вашу папку.

    Для многих хостинговых служб (GoDaddy, 1and1) ваш веб-сервер обслуживается из пользовательского каталога, который уже использует mod_rewrite. Если ты установка CakePHP в каталог пользователя (http://example.com/~username/cakephp/) или любая другая структура URL, уже использует mod_rewrite, вам нужно добавить операторы RewriteBase в файлы .htaccess, которые использует CakePHP (.htaccess, webroot/.htaccess). 9index.php [Л]

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

  4. (необязательно) Чтобы улучшить производственную настройку, следует предотвратить недопустимые активы. от анализа CakePHP. Измените свой webroot .htaccess на что-нибудь как:

     
        RewriteEngine включен
        RewriteBase /путь/к/приложению/
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_URI} !^/(webroot/)?(img|css|js)/(.  index.php [L]
    
     

    Приведенное выше предотвратит отправку неверных ресурсов в index.php. и вместо этого отображать страницу 404 вашего веб-сервера.

    Кроме того, вы можете создать соответствующую страницу HTML 404 или использовать страницу по умолчанию. встроенный CakePHP 404, добавив директиву ErrorDocument :

     ErrorDocument 404/404-не найден
     

нгинкс

nginx не использует файлы .htaccess, такие как Apache, поэтому необходимо создайте эти переписанные URL-адреса в доступной для сайта конфигурации. Обычно это найдено в /etc/nginx/sites-available/your_virtual_host_conf_file . В зависимости в вашей настройке вам придется изменить это, но, по крайней мере, вы нужен PHP, работающий как экземпляр FastCGI. Следующая конфигурация перенаправляет запрос на webroot/index.php :

.
 местоположение / {
    try_files $uri $uri/ /index.php?$args;
}
 

Образец директивы сервера выглядит следующим образом:

 сервер {
    слушать 80;
    слушать [::]:80;
    имя_сервера www. example.com;
    вернуть 301 http://example.com$request_uri;
}
сервер {
    слушать 80;
    слушать [::]:80;
    имя_сервера пример.com;
    корень /var/www/example.com/public/webroot;
    индекс index.php;
    журнал_доступа /var/www/example.com/log/access.log;
    журнал_ошибок /var/www/example.com/log/error.log;
    расположение / {
        try_files $uri $uri/ /index.php?$args;
    }
    расположение ~ \.php$ {
        try_files $uri = 404;
        включить fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_intercept_errors включен;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}
 

Примечание

Последние конфигурации PHP-FPM настроены на прослушивание unix php-fpm сокет вместо TCP-порта 9000 на адресе 127.0.0.1. Если вы получили 502 плохо ошибки шлюза из приведенной выше конфигурации, попробуйте обновить fastcgi_pass до используйте путь сокета unix (например: fastcgi_pass unix:/var/run/php/php7. 1-fpm.sock;) вместо порта TCP.

Блок NGINX

Модуль NGINX динамически настраивается во время выполнения; следующая конфигурация зависит от webroot/index.php , а также обслуживает другие .php скриптов, если они присутствуют через cakephp_direct :

 {
    "слушатели": {
        "*:80": {
            "проход": "маршруты/cakephp"
        }
    },
    "маршруты": {
        "пирожное": [
            {
                "соответствие": {
                    "ури": [
                        "*.php",
                        "*.php/*"
                    ]
                },
                "действие": {
                    "проход": "приложения/cakephp_direct"
                }
            },
            {
                "действие": {
                    "share": "/path/to/cakephp/webroot/",
                    "отступать": {
                        "проход": "приложения/cakephp_index"
                    }
                }
            }
        ]
    },
    "Приложения": {
        "cakephp_direct": {
            "тип": "php",
            "root": "/path/to/cakephp/webroot/",
            "пользователь": "www-данные"
        },
        "тортphp_index": {
            "тип": "php",
            "root": "/path/to/cakephp/webroot/",
            "пользователь": "www-данные",
            "скрипт": "index. php"
        }
    }
}
 

Чтобы включить эту конфигурацию (при условии, что она сохранена как cakephp.json ):

 # curl -X PUT --data-binary @cakephp.json --unix-socket \
       /путь/к/control.unit.sock http://localhost/config
 

IIS7 (хосты Windows)

IIS7 изначально не поддерживает файлы .htaccess. Пока есть надстройки, которые могут добавить эту поддержку, вы также можете импортировать htaccess правила в IIS, чтобы использовать родную перезапись CakePHP. Для этого следуйте эти шаги:

  1. Используйте установщик веб-платформы Microsoft для установки модуля перезаписи URL 2.0 или загрузите его напрямую (32-разрядная / 64-разрядная версия).

  2. Создайте новый файл с именем web.config в корневой папке CakePHP.

  3. Используя Блокнот или любой XML-безопасный редактор, скопируйте следующее код в ваш новый файл web.config:

 
<конфигурация>
    <системный. (.*)$" ignoreCase="false" />
                    
                
            
        
    

 

После создания файла web.config с правильными правилами перезаписи, удобными для IIS, Ссылки CakePHP, CSS, JavaScript и перенаправление должны работать правильно.

Lighttpd

Lighttpd не использует файлы .htaccess , такие как Apache, поэтому необходимо добавить конфигурацию url.rewrite-once в conf/lighttpd.conf . Убедитесь, что в вашей конфигурации lighthttpd присутствует следующее:

 сервер.модули += (
    "мод_алиас",
    "мод_cgi",
    "мод_переписать"
)
# Псевдоним каталога
alias.url = ( "/TestCake" => "C:/Users/Nicola/Documents/TestCake" )
# CGI Php
cgi.assign = ( ".php" => "c:/php/php-cgi.exe" )
# Переписать Cake Php (по пути /TestCake)
url. /TestCake/(.*)$" => "/TestCake/webroot/index.php/$1"
)
 

Приведенные выше строки включают конфигурацию PHP CGI и пример приложения. конфигурация для приложения по пути /TestCake .

Я не могу использовать перезапись URL

Если вы не хотите или не можете получить mod_rewrite (или другой совместимый модуль) работая на вашем сервере, вам нужно будет использовать встроенные красивые URL-адреса CakePHP. В config/app.php раскомментируйте строку, которая выглядит так:

 'Приложение' => [
    // ...
    // 'baseUrl' => env('SCRIPT_NAME'),
]
 

Также удалите следующие файлы .htaccess:

 /.htaccess
вебрут/.htaccess
 

Это сделает ваши URL-адреса похожими на www.example.com/index.php/controllername/actionname/param, а не www.example.com/controllername/actionname/param.

Настройка локальных интерпретаторов PHP | PhpStorm

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

Прежде чем начать, установите механизм PHP либо как часть пакета AMP, либо отдельно.

  1. Нажмите Ctrl+Alt+S , чтобы открыть настройки IDE и выбрать PHP.

  2. На открывшейся странице PHP щелкните рядом со списком CLI Interpreter.

  3. В открывшемся диалоговом окне CLI Interpreters щелкните на левой панели, затем выберите Local во всплывающем меню.

    Если у вас уже есть локальный интерпретатор, настроенный в PhpStorm, он также отображается в меню, а пункт меню меняется на Other Local.

  4. В правой части диалогового окна укажите параметры интерпретатора PHP.

    1. В поле Имя введите идентификатор, чтобы отличить интерпретатор от других, например, php_installation_<версия> .

    2. Укажите каталог установки механизма PHP в поле исполняемого файла PHP. Введите путь вручную или нажмите и выберите соответствующую папку в открывшемся диалоговом окне.

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

  5. В дополнительной области диалогового окна CLI Interpreters можно дополнительно настроить параметры конфигурации установки PHP.

    • В поле Расширение отладчика укажите путь к Xdebug. Это позволяет PhpStorm активировать Xdebug, когда это необходимо, если вы отключили его в файле php.ini, см. Настройка Xdebug для использования в режиме по требованию.

    • В поле Параметры конфигурации составьте строку директив конфигурации, которые будут передаваться через параметр командной строки -d и, таким образом, добавлять новые записи в файл php. ini. Директивы, указанные в этом поле, переопределяют директивы по умолчанию, сгенерированные PhpStorm, такие как -dxdebug.remote_enable=1 , -dxdebug.remote_host=127.0.0.1 , -dxdebug.remote_port=9001 , -dxdebug.remote_mode=req .

      Например, если вы укажете директиву -dxdebug.remote_mode=jit , она переопределит директиву по умолчанию -dxdebug.remote_mode=req и, таким образом, переключит Xdebug в режим Just-In-Time (JIT), см. Отладка в режиме Just-In-Time для получения подробной информации.

      Для этого щелкните рядом с полем Параметры конфигурации, а затем создайте список записей в открывшемся диалоговом окне Параметры конфигурации.

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

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

      • Чтобы удалить запись, выберите ее в списке и нажмите .

      • Чтобы изменить порядок записей, нажмите или .

      После нажатия OK вы вернетесь в диалоговое окно CLI Interpreters, где записи будут преобразованы в командную строку.

  6. Нажмите, чтобы PhpStorm отобразил отдельное информационное окно с подробностями установки и списком загруженных расширений и настроенных параметров. Обратите внимание, что дополнительные параметры, указанные в поле «Параметры конфигурации» диалогового окна «Интерпретаторы PHP», не перечислены.

Мгновенное переключение между настроенными интерпретаторами PHP

  1. Нажмите Ctrl+Shift+A и начните вводить Изменить интерпретатор PHP . В списке предложений выберите действие Изменить интерпретатор PHP.

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

  2. В открывшемся всплывающем меню выберите один из настроенных локальных или удаленных интерпретаторов PHP.

Выбранный интерпретатор будет установлен в качестве интерпретатора проекта по умолчанию на странице PHP диалогового окна «Настройки/Настройки» ( Ctrl+Alt+S ). Это также повлияет на конфигурации запуска/отладки, среды тестирования и конфигурации инструментов контроля качества, которые настроены на использование интерпретатора проекта по умолчанию.

Последнее изменение: 01 августа 2022 г.

Встроенный веб-сервер Настройка удаленных интерпретаторов PHP

1. Установка PHPUnit — Руководство по PHPUnit 9.5

Требования

PHPUnit 9.5 требует PHP 7.3; использование последней версии PHP очень рекомендуемые.

PHPUnit требует dom и json расширения, которые обычно включены по умолчанию.

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

Для функции отчета о покрытии кода требуется Xdebug (2.7.0 или новее) и токенизатор расширения. Для создания XML-отчетов требуется xmlwriter расширение.

Prophecy

PHPUnit имеет встроенную поддержку использования Prophecy для создания тестовых двойников. Однако, начиная с PHPUnit 9.5.23, вы должны добавить зависимость от phpspec/prophecy в файл composer.json вашего проекта, если вы устанавливаете PHPUnit с помощью Composer и хотите использовать Prophecy через метод PHPUnit TestCase::prophesize() .

Обратите внимание, что стандартная поддержка PHPUnit для Prophecy устарела с PHPUnit 9.1.0 и будет удален в PHPUnit 10. Также обратите внимание, что Prophecy не поддержка PHP 8.2 по состоянию на август 2022 г.

Более подробная информация о том, почему вы должны добавить зависимость от phpspec/prophecy в свой доступен проект composer.json , а также поддержка PHP 8.2 здесь.

Архив PHP (PHAR)

Самый простой способ получить PHPUnit — загрузить Архив PHP (PHAR), в котором есть все необходимые (а также некоторые необязательные) зависимости PHPUnit, объединенные в один файл.

Фар расширение требуется для использования архивов PHP (PHAR).

Если расширение Suhosin включен, вам необходимо разрешить выполнение PHAR в вашем php.ini :

 suhosin.executor.include.whitelist = phar
 

PHPUnit PHAR можно использовать сразу после загрузки:

$ curl -LO https://phar.phpunit.de/phpunit-9.5.phar
$ php phpunit-9.5.phar --версия
PHPUnit x.y.z Себастьяна Бергманна и соавторов.
 

Общепринято делать исполняемый файл PHAR:

$ curl -LO https://phar.phpunit.de/phpunit-9.5.phar
$ chmod +x phpunit-9.5.phar
$ ./phpunit-9.5.phar --версия
PHPUnit x.y.z Себастьяна Бергманна и соавторов.
 

Сведения о реализации PHAR

Чтобы избежать проблем, возникающих, когда тестируемый код использует общие зависимости с PHPUnit, но требует версий, отличных от тех, что включены в PHAR, были реализованы следующие меры.

За исключением таких классов, как PHPUnit\Framework\TestCase , которые являются частью общедоступного API PHPUnit, все единицы кода, включенные в дистрибутив PHPUnit PHAR, включая все зависимости, такие как каталоги поставщиков, перемещаются в новое и отдельное пространство имен. .

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

Проверка выпусков PHPUnit PHAR

Все официальные выпуски кода, распространяемые проектом PHPUnit, подписан менеджером по выпуску для выпуска. Подписи PGP и SHA256 хэши доступны для проверки на phar.phpunit.de.

В следующем примере показано, как работает проверка выпуска. Мы начинаем скачав phpunit.phar , а также его отдельная подпись PGP phpunit.phar.asc :

$ curl -LO https://phar.phpunit.de/phpunit-9.5.phar
$ curl -LO https://phar.phpunit.de/phpunit-9.5.phar.asc
 

Мы хотим проверить PHP-архив PHPUnit ( phpunit-x.y.phar ) против его отдельной подписи ( phpunit-x.y.phar.asc ):

$ gpg --проверить phpunit-9.5.phar.asc
gpg: предполагается подписанные данные в «phpunit-9.5.phar»
gpg: Подпись сделана Пн 19 июля 06:13:42 2021 UTC
gpg: с использованием ключа RSA D8406D0D82947747293778314AA394086372C20A
gpg: эмитент "sb@sebastian-bergmann. de"
gpg: не могу проверить подпись: нет открытого ключа
 

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

 $ curl --silent https://sebastian-bergmann.de/gpg.asc | gpg --импорт
gpg: ключ 4AA394086372C20A: 452 подписи не проверены из-за отсутствия ключей
gpg: ключ 4AA394086372C20A: открытый ключ «Себастьян Бергманн », импортированный
gpg: Всего обработано: 1
gpg: импортировано: 1
gpg: окончательно доверенные ключи не найдены
 

Теперь мы импортировали открытый ключ для объекта, известного как «Себастьян Бергманн ». Однако у нас нет возможности подтверждение того, что этот ключ был создан человеком, известным как Себастьян Бергманн. Но давайте попробуем еще раз проверить подпись релиза.

$ gpg --проверить phpunit-9.5.phar.asc
gpg: предполагается подписанные данные в «phpunit-9.5.phar»
gpg: Подпись сделана Пн 19 июля 06:13:42 2021 UTC
gpg: с использованием ключа RSA D8406D0D82947747293778314AA394086372C20A
gpg: эмитент "sb@sebastian-bergmann. de"
gpg: Хорошая подпись от "Sebastian Bergmann " [неизвестно]
gpg: он же "Себастьян Бергманн " [неизвестно]
gpg: он же "Себастьян Бергманн " [неизвестно]
gpg: он же "Себастьян Бергманн " [неизвестно]
gpg: он же "Себастьян Бергманн " [неизвестно]
gpg: ака "[изображение в формате jpeg размером 40635]" [неизвестно]
gpg: ПРЕДУПРЕЖДЕНИЕ: Этот ключ не сертифицирован надежной подписью!
gpg: Нет указания на то, что подпись принадлежит владельцу.
Отпечаток первичного ключа: D840 6D0D 8294 7747 2937 7831 4AA3 9408 6372 C20A
 

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

Любой злоумышленник может создать открытый ключ и загрузить его в открытый ключ серверы. Затем они могут создать вредоносный релиз, подписанный этой подделкой. ключ. Затем, если вы попытаетесь проверить подпись этого поврежденного выпуска, это было бы успешно, потому что ключ не был «настоящим». Следовательно, вы необходимо проверить подлинность этого ключа. Проверка однако подлинность открытого ключа выходит за рамки этого документация. 99,5

Глобальная установка

Обратите внимание, что не рекомендуется устанавливать PHPUnit глобально, как /usr/bin/phpunit или /usr/local/bin/phpunit , например.

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

Либо поместите PHAR конкретной версии PHPUnit, которая вам нужна, в файл вашего проекта. tools каталог (который должен управляться PHIVE) или зависит от конкретной версии PHPUnit вам нужно в вашем проекте composer.json , если вы используете Composer.

Веб-сервер

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

Если вы загружаете PHPUnit на веб-сервер, процесс развертывания прерывается. В более общем плане, если ваш каталог поставщика общедоступен на вашем веб-сервере, то процесс развертывания также нарушен.

Обратите внимание, что если вы загрузите PHPUnit на веб-сервер, могут произойти «плохие вещи». Вы были предупреждены.

Aprelium — Добавление поддержки PHP

  • Домашняя страница
  • загрузок
  • Купить онлайн
  • Справка и поддержка
  • Форум
  • »  В Windows
  • »  В macOS
  • »  В Linux
  • »  Добавление поддержки PHP 8 в Windows
  • »  Добавление поддержки PHP 7 в Windows
  • »  веб-сайт PHP

Обзор

Веб-сервер Abyss поддерживает все выпуски PHP, включая все версии PHP 4, PHP 5, PHP 7 и PHP 8.

В Windows

Важное примечание

Если вы планируете установить PHP 7 или 8 в Windows, мы настоятельно рекомендуем использовать наши предварительно настроенные пакеты PHP 7 или PHP 8 вместо того, чтобы следовать приведенным ниже общим инструкциям по установке PHP. Это проще, быстрее и менее подвержено ошибкам.

Загрузите и установите PHP
  • Загрузите PHP для Windows с https://windows.php.net/download/ и установите или скопируйте его файлы на свой жесткий диск.
  • Если вы используете старую версию PHP и в процессе установки вас спрашивают о типе вашего веб-сервера, выберите Нет (или другой веб-сервер), я настрою веб-сервер вручную и продолжу.
Объявить переводчика
  • Откройте консоль веб-сервера Abyss. В Hosts table, нажмите Настройте в строке, соответствующей хосту, для которого вы хотите добавить поддержку PHP.

    Если на главном экране вашей консоли нет таблицы Hosts , это означает, что вы используете старую версию Abyss Web Server. Пожалуйста, обновитесь до последней версии, прежде чем продолжить. Обновление бесплатное, простое и сохраняет текущую конфигурацию сервера. Нажмите здесь, чтобы загрузить последнюю версию.

  • Выберите Параметры сценария .
  • Установите флажок Включить выполнение сценариев .
  • Нажмите Добавить в таблицу интерпретаторов .
  • Установите для интерфейса значение FastCGI (локальный — каналы).
  • В поле Interpreter нажмите Browse… , перейдите в каталог, в котором установлен PHP, и щелкните php-cgi.exe.
  • Комплект Тип по стандарту.
  • Проверить . Использовать соответствующие расширения для автоматического обновления путей к сценариям .
  • Нажмите Добавить в таблицу Associated Extensions .
  • Введите php в поле Extension и нажмите OK .
  • Нажмите ОК
  • Нажмите OK в диалоговом окне Параметры сценария .
Объявить новые индексные файлы
  • Выберите Индексные файлы .
  • Нажмите Добавить в таблицу Индексные файлы .
  • Введите index.php в поле Имя файла и нажмите OK .
Применить модификации
  • Нажмите Restart , чтобы перезапустить сервер.

В macOS

Загрузите и установите PHP
  • Загрузите пакет PHP 8.1.7 для macOS (~53 МБ). Это нотариально заверенный пакет, содержащий интерпретатор FastCGI/CGI версии 9.0702 PHP 8.1.7 со следующими встроенными расширениями: bcmath, calendar, ctype, date, dom, filter, hash, intl, json, libxml, odbc, pcre, Reflection, session, SimpleXML, SPL, SQLite, standard, tidy, токенизатор, wddx, xml, xmlreader, xmlwriter и zlib. Поддержка ftp, iconv, mbstring, GD, PDO, SQLite, MySQL и MySQLi также включена по умолчанию.
    Пакет предназначен как для 64-разрядных компьютеров Intel, так и для компьютеров Macintosh на базе ARM под управлением macOS 10. 9 и более поздних версий (включая Catalina 10.15, Big Sur 11 и Monterey 12). Он также будет изначально работать на недавно выпущенных компьютерах под управлением Apple M1.
    Пакет был собран для вашего удобства компанией Aprelium и по умолчанию использует /Applications/PHP8/lib/php.ini в качестве файла конфигурации. Пользовательские дополнительные файлы конфигурации также могут быть помещены в подпапку /Applications/PHP8/etc/php.d/.
  • Дважды щелкните загруженный файл пакета и следуйте инструкциям на экране, чтобы установить его на жесткий диск. Это установит или обновит PHP внутри папки PHP8, расположенной в папке «Приложения».
  • Если у вас старая версия Mac OS X или вам нужна старая версия PHP по соображениям совместимости, вы все равно можете использовать устаревшие версии из нашего раздела «Загрузки». Инструкции по установке и настройке аналогичны последней версии PHP.
Объявить переводчика
  • Откройте консоль веб-сервера Abyss. В таблице Hosts нажмите Configure в строке, соответствующей хосту, для которого вы хотите добавить поддержку PHP.

    Если на главном экране вашей консоли нет таблицы Hosts , это означает, что вы используете старую версию Abyss Web Server. Пожалуйста, обновитесь до последней версии, прежде чем продолжить. Обновление бесплатное, простое и сохраняет текущую конфигурацию сервера. Нажмите здесь, чтобы загрузить последнюю версию.

  • Выберите Параметры сценария .
  • Установите флажок Включить выполнение сценариев .
  • Нажмите Добавить в таблицу интерпретаторов .
  • Установите для интерфейса значение FastCGI (локальный — каналы).
  • Введите /Applications/PHP8/bin/php-cgi в поле Interpreter . Если вы используете версию PHP 7, вместо этого введите /Applications/PHP7/bin/php-cgi. Для устаревших версий PHP 5 вам может потребоваться ввести /Applications/PHP5/bin/php в качестве интерпретатора.
  • Установите Тип на Стандарт.
  • Проверить . Использовать соответствующие расширения для автоматического обновления путей к сценариям .
  • Нажмите Добавить в таблицу Associated Extensions .
  • Введите php в поле Extension и нажмите OK .
  • Нажмите ОК
  • Нажмите OK в параметрах сценариев 9.0703 диалог.
Объявить новый индексный файл
  • Выберите Индексные файлы .
  • Нажмите Добавить в таблицу Индексные файлы .
  • Введите index.php в поле Имя файла и нажмите OK .
Применить модификации
  • Нажмите Restart , чтобы перезапустить сервер.

В Linux

Загрузите и установите PHP
  • Большинство дистрибутивов Linux поставляются с PHP. Чтобы проверить, установлен ли он, запустите какой php-cgi или какой php. Если он не установлен, настройте его следующим образом:
    • В Ubuntu/Debian выполните в командной строке sudo apt-get install php8.0-cgi или sudo apt-get install php7.4-cgi.
    • В Red Hat/RHEL/Fedora/CentOS выполните в командной строке sudo yum install php-cli.
    • В других дистрибутивах используйте диспетчер пакетов вашей системы для установки пакета с именем 9.0702 php8-cgi , php7-cgi , php-cgi , php-cli или аналогичный.
  • Чтобы определить, какая версия PHP установлена, выполните php-cgi -v или php -v.
Объявить переводчика
  • Откройте консоль веб-сервера Abyss. В таблице Hosts нажмите Configure в строке, соответствующей хосту, для которого вы хотите добавить поддержку PHP.

    Если нет 9Таблица 0702 Hosts на главном экране вашей консоли означает, что вы используете старую версию веб-сервера Abyss. Пожалуйста, обновитесь до последней версии, прежде чем продолжить. Обновление бесплатное, простое и сохраняет текущую конфигурацию сервера. Нажмите здесь, чтобы загрузить последнюю версию.

  • Выберите Параметры сценария .
  • Установите флажок Включить выполнение сценариев .
  • Нажмите Добавить в таблице интерпретаторов .
  • Установите для интерфейса значение FastCGI (локальный — каналы).
  • В поле Interpreter нажмите Browse… , перейдите в /usr/bin или в каталог, где вы установили PHP, и щелкните файл с именем php-cgi. Если такого файла не существует, щелкните файл с именем php.
  • Установите Тип на Стандарт.
  • Проверить Использовать соответствующие расширения для автоматического обновления путей к сценариям .
  • Нажмите Добавить в таблицу Associated Extensions .
  • Введите php в поле Extension и нажмите OK .
  • Нажмите ОК
Объявить новый индексный файл
  • Выберите Индексные файлы .
  • Нажмите Добавить в таблицу Индексные файлы .
  • Введите index.php в поле имени файла 9.0703 и нажмите OK .
Применить модификации
  • Нажмите Restart , чтобы перезапустить сервер.

Оставайтесь на связи с нами

Подпишитесь на нашу небольшую рассылку, чтобы получать объявления о продуктах, статьи и полезные советы.

или Подпишитесь на @abyssws в Твиттере

Установите gRPC для PHP | Google Cloud

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

Цели

  • Установить расширение gRPC для PHP.
  • Включить расширение gRPC для PHP.

Требования

  • PHP 7. 0 или выше
  • PECL (если вы не строите из исходников)
  • Композитор
Примечание: Пользователи Windows могут загрузить и включить библиотеки DLL от ПЕКЛ.

Установка PECL

Ubuntu / Debian

 sudo apt-get install autoconf zlib1g-dev php-dev php-pear
 

При использовании PHP 7.4+, PHP должен быть установлен с версией 9.1115 —с грушей флаг.

CentOS / RHEL 7

 sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
 sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
 sudo yum установить php-devel php-pear gcc zlib-devel
 

macOS

 завиток -O https://pear.php.net/go-pear.phar
 sudo php -d detect_unicode = 0 go-pear.phar
 

Windows

Windows не требует PECL.

Установка Composer

Linux

 curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
 

macOS

 curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
 

Windows

Следуйте официальным инструкциям по установке Composer для Windows.

Установка расширения gRPC

Использование PECL

 sudo pecl install grpc
 

Это компилирует и устанавливает расширение gRPC PHP в стандартный пакет PHP. каталог расширения.

Примечание: Для пользователей CentOS/RHEL 6, к сожалению, этот шаг не сработает. Следовать инструкции на вкладке Сборка из исходного кода для компиляции расширение из исходников.

Сборка из исходного кода

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

  1. Клонируйте репозиторий gRPC из GitHub.

    клон
     git https://github.com/grpc/grpc
     
  2. Создайте и установите основную библиотеку gRPC C.

     компакт-диск grpc
    обновление подмодуля git --init
    делать
    судо сделать установить
    Загрузка и выполнение библиотеки может занять несколько минут.
    Если у вас есть git версии 1.8.4 или выше, вы можете ускорить
    команду `git submodule update --init`, добавив `--depth=1`
    флаг.
     
  3. Скомпилируйте PHP-расширение gRPC.

     компакт-диск src/php/ext/grpc
    phpize
    ./настроить
    делать
    судо сделать установить
     

Windows

Пользователи Windows могут загрузить предварительно скомпилированный gRPC непосредственно с Сайт ПЕКЛ.

Прочтите документацию по PHP для установки расширений в Windows.

Включить расширение gRPC в php.ini

Linux/macOS

Добавьте эту строку в любом месте вашего файла php.ini , например, /etc/php7/cli/php.ini . Вы можете найти этот файл, запустив php --ini .

 расширение=grpc.so
 

Windows

Добавьте эту строку в любом месте файла php.ini , например, C:\Program Files\PHP\7.3\php.ini 91,38 дюйма

Установка библиотеки времени выполнения protobuf

Вы можете выбрать одну из двух библиотек времени выполнения protobuf. API, которые они предлагают, идентичный. Реализация C работает лучше, чем PHP (собственная) реализация, в то время как нативная реализация устанавливается проще, чем реализация С.

Реализация C

Для повышения производительности gRPC включите расширение protobuf C.

Linux/macOS

Установите protobuf.so расширение с помощью PECL.

 sudo pecl установить protobuf
 

Теперь добавьте эту строку в файл php.ini , например, /etc/php5/cli/php.ini .

 расширение = protobuf.so
 

Windows

Загрузите предварительно скомпилированное расширение protobuf непосредственно с Сайт ПЕКЛ.

Теперь добавьте эту строку в файл php.ini , например, C:\Program Files\PHP\7. 3\php.ini .

 расширение = php_protobuf.dll
 93,17 дюйма
 

Что дальше

Теперь, когда вы установили gRPC и расширение PHP gRPC, попробуйте gRPC-enabled API, такие как Облачный гаечный ключ.

Необходимые настройки PHP | Руководство разработчика Adobe Commerce

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

См. системные требования для поддерживаемых версий PHP.

Убедитесь, что PHP установлен

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

 
 1
 
 php -v
 

Если PHP установлен, отображается сообщение, подобное следующему:

 
 1
2
3
 
 PHP 7. 4.0 (кли) (построено: 14 августа 2019 г., 16:42:46) ( НТС )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, авторское право (c), 1998–2018 гг. Zend Technologies с Zend OPcache v7.1.6, авторское право (c), 1999–2018 гг., Zend Technologies
 

Magento 2.4 совместим с PHP 7.3, но мы тестируем и рекомендуем использовать PHP 7.4.

Если PHP не установлен или требуется обновление версии, установите его, следуя инструкциям для вашей конкретной версии Linux. В CentOS могут потребоваться дополнительные шаги.

Проверить установленные расширения

Magento требует установки набора расширений.

Magento с открытым исходным кодом и Adobe Commerce:

  • доб-бкмат
  • доб-ктип
  • внешний завиток
  • вн-дом
  • доб-файлинформация
  • доб-гд
  • доб-хеш
  • доб-значок
  • доб-внутренний
  • ext-json
  • ext-libxml
  • доб-строка
  • доб-опенссл
  • внеш-пкре
  • доб-pdo_mysql
  • доб-симплексмл
  • доб-мыло
  • доп-розетки
  • доб-натрий
  • ext-токенизатор
  • ext-xmlwriter
  • доб-xsl
  • расшир. -zip
  • библиотека-libxml
  • библиотека-openssl

Дополнительно для Adobe Commerce требуется:

  • доб-бкмат
  • доб-ктип
  • внешний завиток
  • вн-дом
  • доб-файлинформация
  • доб-гд
  • доб-хеш
  • доб-значок
  • доб-внутренний
  • ext-json
  • ext-libxml
  • доб-mbstring
  • доб-опенссл
  • внеш-пкре
  • доб-pdo_mysql
  • доб-симплексмл
  • доб-мыло
  • доп-розетки
  • доб-натрий
  • доб-спл
  • внешний токенизатор
  • ext-xmlwriter
  • доб-xsl
  • расшир.-zip
  • библиотека-libxml
  • библиотека-openssl

Для проверки установленных расширений:

  1. Список установленных модулей.

     
     1
     
     php -м
     
  2. Убедитесь, что установлены все необходимые расширения.
  3. Добавьте все отсутствующие модули, используя тот же рабочий процесс, что и для установки PHP. Например, если вы используете yum для установки PHP, модули PHP 7.4 можно добавить с помощью:

     
     1
     
     yum -y установить php74u-pdo php74u-mysqlnd php74u-opcache php74u-xml php74u-gd php74u-devel php74u-mysql php74u-intl php74u-mbstring php74u-bcmath php74u-json php74u
     

Проверить настройки PHP

Если вы используете PHP 7.4.20, установите pcre.jit=0 в файле php.ini . Это позволит обойти ошибку PHP, которая препятствует загрузке CSS.

  • Установка системного часового пояса для PHP; в противном случае такие ошибки, как следующее отображение во время установки, и операции, связанные со временем, такие как cron, могут не работать:
 
 1
 
 Предупреждение PHP: date(): небезопасно полагаться на системные настройки часового пояса.  [следует больше сообщений]
 
  • Установите лимит памяти PHP.

    Наши подробные рекомендации:

    • Компиляция кода или развертывание статических ресурсов, 1G
    • Отладка, 2G
    • Тестирование, ~3-4G
  • Увеличьте значения для PHP realpath_cache_size и realpath_cache_ttl до рекомендуемых настроек:

     
     1
    2
     
     realpath_cache_size=10M
    realpath_cache_ttl=7200
     

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

  • Включить opcache.save_comments , который требуется для Magento 2.1 и более поздних версий.

    Мы рекомендуем включить PHP OPcache из соображений производительности. OPcache включен во многих дистрибутивах PHP.

    Magento 2.1 и более поздние версии используют комментарии кода PHP для генерации кода.

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

Шаг 1: Найдите файлы конфигурации PHP

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

Найти

файл конфигурации php.ini

Чтобы найти конфигурацию веб-сервера, запустите файл phpinfo.php в веб-браузере и найдите загруженный файл конфигурации следующим образом:

Чтобы найти конфигурацию командной строки PHP, введите

 
 1
 
 php --ini | grep "Загруженный файл конфигурации"
 

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

Найти параметры конфигурации OPcache

Настройки PHP OPcache обычно находятся в php.ini или opcache.ini . Расположение может зависеть от вашей операционной системы и версии PHP. Файл конфигурации OPcache может иметь раздел opcache или такие параметры, как opcache.enable .

Используйте следующие рекомендации, чтобы найти его:

  • Веб-сервер Apache:

    Для Ubuntu с Apache настройки OPcache обычно находятся в php.ini .

    Для CentOS с Apache или nginx настройки OPcache обычно находятся в /etc/php.d/opcache.ini

    Если нет, используйте следующую команду, чтобы найти его:

     
     1
     
     sudo find / -name 'opcache. ini'
     
  • веб-сервер nginx с PHP-FPM: /etc/php/7.2/fpm/php.ini

Если у вас есть несколько opcache.ini , измените их все.

Шаг 2. Как установить параметры PHP

Чтобы установить параметры PHP:

  1. Откройте файл php.ini в текстовом редакторе.
  2. Найдите часовой пояс вашего сервера в доступных настройках часового пояса
  3. Найдите следующий параметр и при необходимости раскомментируйте его:

     
     1
     
     дата.часовой пояс =
     
  4. Добавьте настройку часового пояса, найденную на шаге 2.

  5. Измените значение memory_limit на одно из значений, рекомендованных в начале этого раздела.

    Например,

     
     1
     
     memory_limit=2G
     
  6. Добавьте или обновите конфигурацию realpath_cache , чтобы она соответствовала следующим значениям:

     
     1
    2
    3
    4
    5
    6
    7
    8
    9
     
     ;
    ; Увеличьте размер кеша реального пути
    ;
    realpath_cache_size = 10M
    ;
    ; Увеличить ttl кеша реального пути
    ;
    realpath_cache_ttl = 7200
     
  7. Сохраните изменения и выйдите из текстового редактора.

  8. Откройте другой php.ini (если они разные) и внесите в него такие же изменения.

Шаг 3. Установите параметры OPcache

Для установки opcache.ini вариантов:

  1. Откройте файл конфигурации OPcache в текстовом редакторе:

    • opcache.ini (CentOS)
    • php.ini (Убунту)
    • /etc/php/7.2/fpm/php.ini (веб-сервер nginx (CentOS или Ubuntu))
  2. Найдите opcache.save_comments и при необходимости раскомментируйте его.
  3. Убедитесь, что его значение равно 1 .
  4. Сохраните изменения и выйдите из текстового редактора.
  5. Перезапустите веб-сервер:

    • Apache, Ubuntu: перезапуск службы apache2
    • Apache, CentOS: служба httpd перезапуск
    • nginx, Ubuntu и CentOS: перезапуск службы nginx

Поиск и устранение неисправностей

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