[Sysadmins] использовать php5 вместо php7

Anton Gorlov stalker на altlinux.ru
Ср Авг 21 22:49:35 MSK 2019


https://github.com/dshafik/php7-mysql-shim

21.08.2019 22:46, Alexander Yereschenko пишет:
> 21.08.2019 12:21, Гусев Владислав Юрьевич пишет:
>> День добрый!
>>
>> После установки php7 как версии по умолчанию (через /etc/alternatives) 
>> отвалился старый сайт, который не работает с php старше пятёрки.
>> Подскажите, пожалуйста, есть ли возможность в апаче2 для отдельного 
>> сайта указать использование php5 (он тоже установлен)?
>>
>> Спасибо.
>>
> Был аналогичный случай, когда на хосте у заказчика только php7, и надо 
> было запустить старый сайт на php5. Проблема была в использовании старых 
> функций mysql_* для работы базой (эти функции из 7-ки выпилены в пользу 
> mysqli_*
> 
> Для совместимости использовался костыль - переопределение отсутствующих 
> функций mysql через mysqli
> 
> (можно доработать под свои нужды)
> 
> ==================================================
> 
> define('DB_SERVER', 'localhost');
> define('DB_SERVER_USERNAME', 'root');
> define('DB_SERVER_PASSWORD', 'pass');
> define('DB_DATABASE', 'test_db');
> 
> 
> if (function_exists("mysql_query")) {
> 
>      // до версии 5.6 включительно - работаем по-старому - mysql
> 
>      $link = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, 
> DB_SERVER_PASSWORD) or die('No connect');
>      $base = mysql_select_db(DB_DATABASE);
> 
>      mysql_query("SET NAMES utf8");
> } else {
> 
>      // иначе - используем mysqli
> 
>      class DB
>      {
>          static $link;
>          static $count = 0;
> 
>          public static function connect()
>          { // Синглтончик-с в целях экономии
>              if (empty(self::$link)) {
>                  self::$link = @mysqli_connect(DB_SERVER, 
> DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE)
>                      or die('No connect');
> 
>                  mysqli_set_charset(self::$link, 'utf8');
>              }
>          }
>      }
> 
>      // Запускаем не отходя от кассы
>      DB::connect();
> 
> 
> 
>      // ------------- переопределяем функции mysql_ 
> -------------------------------------
> 
>      function mysql_query($sql)
>      {
>          $result = mysqli_query(db::$link, $sql)
>              or die(mysqli_error(db::$link));
> 
>          return $result;
>      }
> 
>      function mysql_real_escape_string($escapestr)
>      {
>          return mysqli_real_escape_string(db::$link, $escapestr);
>      }
> 
>      function mysql_insert_id()
>      {
>          return mysqli_insert_id(db::$link);
>      }
> 
>      function mysql_num_rows($result)
>      {
>          return mysqli_num_rows($result);
>      }
> 
>      function mysql_error()
>      {
>          return mysqli_error(db::$link);
>      }
> 
>      function mysql_fetch_array($result, $resulttype = MYSQLI_BOTH)
>      {
>          return mysqli_fetch_array($result, $resulttype);
>      }
> 
>      function mysql_result($result, $number, $field = 0)
>      {
>          mysqli_data_seek($result, $number);
>          $row = mysqli_fetch_array($result);
>          return $row[$field];
>      }
> 
>      function mysql_free_result($result)
>      {
>          return mysqli_free_result($result);
>      }
> 
>      function mysql_data_seek($result, $offset)
>      {
>          return mysqli_data_seek($result, $offset);
>      }
> }
> 
> ==================================================
> 



Подробная информация о списке рассылки Sysadmins