Архив рубрики: PHP

The server requested authentication method unknown to the client

После апгрейда сервера MySQL 8, часть скриптов стала выдавать при коннекте ошибку вида:

The server requested authentication method unknown to the client

Решение: нужно для пользователя поменять способ аутенфикации:

ALTER USER 'vasya'@'localhost' IDENTIFIED WITH mysql_native_password
BY 'password';

Простой случай сокращения полного ФИО

В случае простого случая необходимости сокращения ФИО вида «Пупкин Василий Иванович» до Пупкин В.И. можно воспользоваться следующей функцией:

/**
 * Сокращение полного имени до Фамилия И.О.
 * @param type $fio
 * @return string
 */
function smallfio($fio,$coding="UTF-8"){
  $ret="";
  $arr=  explode(" ", $fio);
  //die(mb_detect_encoding($arr[1]));
  if (isset($arr[0]) and isset($arr[1]) and isset($arr[2])){
    $arr[1]=trim($arr[1]);
    $arr[2]=trim($arr[2]);
    $ret=$arr[0]." ".mb_substr($arr[1],0,1,$coding).".".mb_substr($arr[2],0,1,$coding).".";
  } else
  if (isset($arr[0]) and isset($arr[1])){
    $ret=$arr[0]." ".mb_substr($arr[1],0,1,$coding).".";
  };  
  return $ret;
};

LAMP для FreeBSD 12 (Drupal 8-WordPress 5)

Apache:

pkg install apache24
sysrc apache24_enable=yes

Правим /usr/local/etc/apache24/httpd.conf, устанавливая ServerName и ServerAdmin. Далее можно запускать:

service apache24 start

Mysql 8:

pkg install mysql81-server
sysrc mysql_enable=yes
service mysql-server start
mysql_secure_installation

для того чтобы работало старое ПО (новая схема аутенфикации), можно выставить режим совместимости:

mcedit /usr/local/etc/mysql/my.cnf
<code>[mysqld]
...
default_authentication_plugin   = mysql_native_password
...</code>
/usr/local/etc/rc.d/mysql-server restart

Memcached:

pkg install memcached_enable
sysrc memcached_enable=yes
service memcached start

PHP:

pkg install php73-bcmath php73-tokenizer php73-memcache php73-pdo php73-pdo_mysql mod_php73 php73-hash php73-mysqli php73-zip php73-openssl php73-mbstring php73-mysqli php73-json php73-iconv php73-gd php73-curl php73-dom php73-curl

В /usr/local/etc/apache24/httpd.conf добавим:

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>
/usr/local/etc/rc.d/apache24 restart

PHP Mailer : SERVER -> CLIENT: 220 TLS go ahead

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

SERVER -> CLIENT: 220 TLS go ahead

Погуглив, нашел решение:

$correo->SMTPOptions = array(
        'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);

Обработка ошибок загрузки данных в операциях Add, Edit, Del в JqGrid

Чтобы отобразить «свою» интерпретацию ошибки на сервере при выполнении операции Add, Del, Edit можно воспользоваться следующим «финтом ушами»: 1) на сервере генерируем ошибку, например 501 которую обрабатывает стандарный обработчик ошибок errorTextFormat:

php:

 header('HTTP/1.1 501 Internal Server Error'); 
                die("Не могу добавить пользователя! " . mysqli_error(Module::$sqln->idsqlconnection));

И код JavaScript на клиенте:

$("#list1").navGrid("#pager1",{
				search: true,
				add: true,
				edit: true,
				del: true,
				refresh: true
				},
				{errorTextFormat: commonError}, //edit options
				{errorTextFormat: commonError}, //add options
				{errorTextFormat: commonError}, //delete options
				{
					multipleSearch: true
					,closeAfterSearch: true
					,closeAfterReset: true									
				}
			);
...
function commonError(data) {
    console.log(data.responseText);
    return data.responseText;
}