Решение 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 tp_id NOT IN(1,2,4,8,9,10,39,63,64,65,106,107,109,110,114,117,118,119)

Читать далее Скрипт отправки СМС через 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
// данные доступа к базе данных
$db_host="192.168.1.1";
$db_user="user";
$db_password="password";
$db_name = "base";
$table_name = "abon";

// соединение с БД
mysql_connect($db_host, $db_user, $db_password) or die (mysql_error());
mysql_select_db($db_name) or die (mysql_error());
mysql_query("SET NAMES 'utf8'");

// запрос
$query = 'SELECT * FROM `'.$table_name.'` WHERE `depozit`<0 ORDER BY `depozit` ASC LIMIT 100;';
$sql = mysql_query($query);

// обрабатываем полученный результат
// количество
$num_rows = mysql_num_rows($sql);
echo $num_rows.' должников показано:<br />';

// выводим данные
while ($sql_data = mysql_fetch_array($sql)) {
    echo '<table cellpadding="5" cellspacing="3" border="0"><tr><td>';
    echo '<tr><td>'.$sql_data['depozit'].'</td><td>'.$sql_data['id'].'</td><td>'.$sql_data['first_name'].'</td><td>'.$sql_data['second_name'].'</td></tr>';
    echo '</tr></td></table>';
}
?>

Смотрите также:
Простое кеширование страниц

PHP. Перенаправление на другую страницу (Redirect)

Приведу пример перенаправления на другую страницу:

<?php
  header("Location: http://www.example.com/");
  exit;
?>

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

<?php
  header('Refresh: 5; URL=http://www.example.com/');
  echo 'Через 5 секунд Вы будете автоматически перенаправлены на другую страницу.';
  exit;
?>

Пример Redirect в JavaScript (это может работать не у всех):

<script type="text/javascript">
  location.replace("http://www.example.com/");
</script>

Пример Redirect в JavaScript через 5 секунд (это может работать не у всех):

<script type="text/javascript">
  setTimeout('location.replace("http://www.example.com/")', 5000);
</script>

Пример Redirect в HTML через 5 секунд (если указать 0, то будет переадресовывать сразу):

<meta http-equiv="refresh" content="5; url=http://www.example.com/">

Комментарии в PHP

В PHP комментарии могут быть трех типов.

Приведу пример первого (однострочный в стиле C++):

<?php
echo "ТЕКСТ"; // Комментарий
?>

Второй в стиле Unix:

<?php
echo "ТЕКСТ"; # Комментарий
?>

Третий многострочный:

<?php
     /* Комментарий
        Комментарий
        Комментарий */
     echo "ТЕКСТ";
?>

Решение ошибки «PDOException «could not find driver»»

Заметил как-то следующую ошибку:

PDOException «could not find driver»

Причиной может быть не активированный pdo_mysql либо не установлено php5-mysql.
Посмотрим информацию о PDO:

php -i|grep PDO

В php.ini или подключенных файлах конфигурации должны быть строки:

extension=pdo.so
extension=pdo_mysql.so

Посмотрим информацию о php5-mysql:

dpkg --get-selections | grep php5-mysql

Если не установлен, то установим, в Ubuntu это можно сделать например так:

sudo apt-get install php5-mysql
sudo apt-get install php-mysql
sudo /etc/init.d/apache2 restart
sudo service apache2 restart

Как установить PHP 5.6 в Ubuntu 16

В Ubuntu 16 при установке PHP командой apt-get install php устанавливается PHP версии 7, по этому чтобы установить PHP 5.6, можно добавить сторонний репозиторий.

Если в системе установлен PHP 7, то удалить все его компоненты можно например так:

sudo apt-get purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`

Теперь добавим сторонний источник:

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php

И установим из него PHP 5.6:

sudo apt-get update
sudo apt-get install php5.6

Аналогично можно установить модули, например:

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

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

sudo php -v

Смотрите также мою статью:
Повышение версии PHP в Ubuntu 14.04