Настройка open_basedir

Настоятельно рекомендую настраивать параметр open_basedir, в котором перечисляются директории за пределы которых нельзя будет выйти php скриптам, так как по умолчанию open_basedir не указан.
Если на веб сервере не указан open_basedir, то при наличии уязвимостей Path Traversal например, можно получить доступ ко всем файлам на сервере на которые есть права чтения «read by others», то есть к директории /etc/, /var/ и другим.

Читать далее «Настройка open_basedir»

Как вывести текущий год в подвале сайта

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

Читать далее «Как вывести текущий год в подвале сайта»

Решение PHP Notice: Use of undefined constant x — assumed ‘x’

Заметил однажды при написании PHP скрипта следующее уведомление:

PHP Notice:  Use of undefined constant uid - assumed 'uid' in /scripts/file.php on line 31
PHP Notice:  Use of undefined constant value - assumed 'value' in /scripts/file.php on line 32

Читать далее «Решение PHP Notice: Use of undefined constant x — assumed ‘x’»

Скрипт отправки СМС через Goip4 шлюз для ABillS

Приведу пример PHP скрипта, которым я рассылаю СМС сообщения через GoIP4 шлюз.

Сначала выберем тарифы только с месячным начислением:

SELECT name, tp_id FROM tarif_plans;
SELECT name, tp_id FROM tarif_plans WHERE month_fee>0;

Собственно вот сам скрипт, я запускаю его из cron на отдельном сервере (где я установил GoIP4 СМС сервер):

Читать далее «Скрипт отправки СМС через Goip4 шлюз для ABillS»

Повышение версии PHP в Ubuntu 14.04

Понадобилось однажды на Ubuntu Server 14.04 LTS повысить версию PHP 5.5.9 до 5.6, обычное обновление компонентов системы не помогло:

sudo apt-get update
sudo apt-get upgrade

Можно попробовать обновить систему до 16.04 или выше как я описывал в статье Обновление Ubuntu 14.04 до 16.04. Вместе с системой будет обновлен и PHP.

Если же обновление системы не удается выполнить, то можно добавить сторонний источник с PHP:

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

И установить из него нужную версию, например PHP 5.6:

sudo apt-get install php5.6 php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml

Так как установленных версий может быть несколько, отключим старую и активируем установленную:

sudo a2dismod php5
sudo a2enmod php5.6
sudo service apache2 restart

Аналогично можно установить PHP 7.2:

sudo apt-get install php7.2
sudo a2dismod php5.6
sudo a2enmod php7.2
sudo service apache2 restart

Или PHP 7.0:

sudo apt-get install php7.0
sudo a2dismod php7.2
sudo a2enmod php7.0
sudo service apache2 restart

Решение PHP Warning «Permission denied /var/cpanel/php/sessions/ea-php56/»

Однажды обновил EasyApache3 на EasyApache4 в cPanel и заметил в логах PHP следующее:

[29-Mar-2018 15:54:45 UTC] PHP Warning:  Unknown: open(/var/cpanel/php/sessions/ea-php56/sess_3d96o7nnlnnr473p8619vqkdm1, O_RDWR) failed: Permission denied (13) in Unknown on line 0
[29-Mar-2018 15:54:45 UTC] PHP Warning:  Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/cpanel/php/sessions/ea-php56) in Unknown on line 0

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

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

chmod 777 /var/cpanel/php/sessions/ea-php56

Либо открыть конфигурацию PHP, например в редакторе nano:

nano /opt/cpanel/ea-php56/root/etc/php.ini

Найти:

session.save_path = "/var/cpanel/php/sessions/ea-php56"

И изменить на:

session.save_path = "/tmp"

Что раньше и было на старом EasyApache3 в конфигурации PHP /usr/local/lib/php.ini.

После этого предупреждение не появлялось.

Смотрите также:
Миграция с EasyApache 3 на EasyApache 4

Скрипт отправки СМС через Goip4 шлюз

Приведу пример скрипта написанного на PHP, для отправки СМС сообщений через Goip4 шлюз.
Скрипт получает данные из базы SQL запросом и поочередно отправляет СМС на каждый номер, а также заносит запись об отправке в специальную таблицу sms.
Читать далее «Скрипт отправки СМС через Goip4 шлюз»

PHP скрипт «ТОП должников АСРМ «Ника»»

Приведу пример PHP скрипта отображающего список должников из базы данных АСРМ «Ника»:

Читать далее «PHP скрипт «ТОП должников АСРМ «Ника»»»