Инструменты пользователя

Инструменты сайта


how-to:php

PHP

PPA Repository

Пример для установки php5.6:

sudo add-apt-repository -y ppa:ondrej/php
sudo apt update
sudo apt install php5.6

php-fpm

Установка:

sudo apt install php-fpm

Страница статуса

Для включения страницы необходимо в конфигурационных файлах php-fpm в файле www.conf раскомментировать строчку:

pm.status_path = /status

Одной командой для Alpine Linux:

sed -i "s/;pm.status_path/pm.status_path/" /usr/local/etc/php-fpm.d/www.conf

и добавить в nginx, пример для php-fpm на mngt.domain.com:9000:

location ~ ^/status$ {
  fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  include fastcgi_params;
  fastcgi_pass mngt.domain.com:9000;
}

https://rtfm.co.ua/nginx-php-fpm-vklyuchenie-php-server-status/ - NGINX: PHP-FPM – включение PHP server-status

Apache

Включаем модуль:

sudo a2enmod proxy_fcgi

В VirtualHost добавляем:

ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php/php7.0-fpm.sock|fcgi://localhost/var/www/documentroot/
DirectoryIndex /index.php index.php

Перегружаем конфигурацию:

sudo service apache2 reload

https://wiki.apache.org/httpd/PHP-FPM

Nginx

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

location ~ \.php$ {
  fastcgi_pass unix:/run/php/php7.0-fpm.sock;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_param  PATH_INFO $fastcgi_script_name;
  include /etc/nginx/fastcgi_params;
}

Запуск на определенном порту

Для запуска fpm на порту (9000):

sudo sed 's/listen = \/run\/php\/php7.0-fpm.sock/listen = 127.0.0.1:9000/' -i /etc/php/7.0/fpm/pool.d/www.conf
sudo sed '/listen.allowed_clients = 127.0.0.1/s/^;//' -i /etc/php/7.0/fpm/pool.d/www.conf
sudo service php7.0-fpm restart

php.ini

date.timezone = Asia/Yekaterinburg

https://php.net/manual/ru/timezones.php - Список поддерживаемых временных зон

Работа через proxy

Для pear / pecl:

pear config-set http_proxy http://d2proxy.domain.com:3128

Docker

Сборка контейнера php-fpm с поддержкой ldap mysqli xml xmlrpc opcache gd exif и установкой часового пояса:

Dockerfile

Dockerfile

FROM php:7.4-fpm-alpine
 
LABEL maintainer="domain" \
      release-date="2020–02–22"
 
ARG TZ=Asia/Yekaterinburg
 
RUN set -x \
  && apk add --no-cache libldap libpng \
  && apk add --no-cache --virtual .build-deps autoconf g++ make openldap-dev cyrus-sasl-dev mariadb-dev libxml2-dev libpng-dev \
  && pear config-set http_proxy $http_proxy \
  && pecl install apcu \
  && docker-php-ext-enable apcu \
  && docker-php-ext-configure ldap --with-ldap-sasl \
  && docker-php-ext-configure mysqli \
  && docker-php-ext-configure xml \
  && docker-php-ext-configure xmlrpc \
  && docker-php-ext-configure opcache \
  && docker-php-ext-configure gd \
  && docker-php-ext-install ldap mysqli xml xmlrpc opcache gd exif \
  && apk del .build-deps \
  && rm -rf /var/cache/apk/* \
  && sed -i "s/;pm.status_path/pm.status_path/" /usr/local/etc/php-fpm.d/www.conf \
  && sed -i "s/listen = 9000/listen = 0.0.0.0:9000/" /usr/local/etc/php-fpm.d/zz-docker.conf \
  && printf "[PHP]\ndate.timezone = \"$TZ\"\n" > /usr/local/etc/php/conf.d/tzone.ini
 
ENTRYPOINT ["/usr/local/sbin/php-fpm","--nodaemonize","--fpm-config","/usr/local/etc/php-fpm.conf"]
 
EXPOSE 9000


пример запуска:

docker run -d -p 9000:9000 \
  -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro \
  -v /data/docker/www:/var/www --name php-fpm php-fpm

https://github.com/docker-library/php/issues/541 - mcrypt
https://hub.docker.com/r/hermsi/alpine-fpm-php/dockerfile - apcu
https://hub.docker.com/r/llaumgui/php/dockerfile - ldap

Пример запуска PHP-FPM для Daloradius из своего образа (Dockerfile), daloRADIUS находится в /data/docker/nginx/var_www/daloradius:

d run -d -p9000:9000 --mount type=bind,src=/data/docker/nginx/var_www,dst=/var/www/ --name php-fpm fpm-fpm

Dockerfile

Dockerfile

# Version: 0.0.1
FROM php:7.0-fpm-alpine
MAINTAINER lioncub <lioncub@domain.com>
 
ENV REFRESHED_AT 2018–06–15
ENV http_proxy 'http://d2proxy.domain.com:3128'
 
RUN apk update \
  && apk upgrade \
  && apk add --no-cache libmcrypt libjpeg libpng freetype libmcrypt-dev libjpeg-turbo-dev libpng-dev freetype-dev \
  && pear config-set http_proxy $http_proxy \
  && pear install DB \
  && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
  && docker-php-ext-install -j$(nproc) mcrypt mysqli gd \
  && apk del libmcrypt-dev libjpeg-turbo-dev freetype-dev libpng-dev \
  && rm /var/cache/apk/* \
  && sed -i "s/listen = 9000/listen = 0.0.0.0:9000/" /usr/local/etc/php-fpm.d/zz-docker.conf
 
ENTRYPOINT ["/usr/local/sbin/php-fpm","--nodaemonize","--fpm-config","/usr/local/etc/php-fpm.conf"]
 
EXPOSE 9000


https://github.com/docker-library/php/issues/75#issuecomment-235773906

Примеры

Проверить GD:

php -r "var_dump(gd_info());"

https://www.php.net/manual/en/function.gd-info.php

Показать установленные модули:

php -m
how-to/php.txt · Последнее изменение: 127.0.0.1