ALT Linux sysadmins discussion
 help / color / mirror / Atom feed
* [Sysadmins] использовать php5 вместо php7
@ 2019-08-21  9:21 Гусев Владислав Юрьевич
  2019-08-21 19:46 ` Alexander Yereschenko
  0 siblings, 1 reply; 5+ messages in thread
From: Гусев Владислав Юрьевич @ 2019-08-21  9:21 UTC (permalink / raw)
  To: ALT Linux sysadmins' discussion

День добрый!

После установки php7 как версии по умолчанию (через /etc/alternatives) отвалился старый сайт, который не работает с php старше пятёрки.
Подскажите, пожалуйста, есть ли возможность в апаче2 для отдельного сайта указать использование php5 (он тоже установлен)?

Спасибо.

-- 
Гусев Владислав Юрьевич





^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Sysadmins] использовать php5 вместо php7
  2019-08-21  9:21 [Sysadmins] использовать php5 вместо php7 Гусев Владислав Юрьевич
@ 2019-08-21 19:46 ` Alexander Yereschenko
  2019-08-21 19:49   ` Anton Gorlov
  2019-08-22  6:28   ` Гусев Владислав Юрьевич
  0 siblings, 2 replies; 5+ messages in thread
From: Alexander Yereschenko @ 2019-08-21 19:46 UTC (permalink / raw)
  To: sysadmins

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);
     }
}

==================================================

-- 
С уважением, Александр Ерещенко.



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Sysadmins] использовать php5 вместо php7
  2019-08-21 19:46 ` Alexander Yereschenko
@ 2019-08-21 19:49   ` Anton Gorlov
  2019-08-22  6:28   ` Гусев Владислав Юрьевич
  1 sibling, 0 replies; 5+ messages in thread
From: Anton Gorlov @ 2019-08-21 19:49 UTC (permalink / raw)
  To: sysadmins

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);
>      }
> }
> 
> ==================================================
> 



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Sysadmins] использовать php5 вместо php7
  2019-08-21 19:46 ` Alexander Yereschenko
  2019-08-21 19:49   ` Anton Gorlov
@ 2019-08-22  6:28   ` Гусев Владислав Юрьевич
  2019-08-22  8:41     ` Anton Gorlov
  1 sibling, 1 reply; 5+ messages in thread
From: Гусев Владислав Юрьевич @ 2019-08-22  6:28 UTC (permalink / raw)
  To: ALT Linux sysadmins' discussion

> -----Original Message-----
> From: sysadmins-bounces@lists.altlinux.org <sysadmins-bounces@lists.altlinux.org> On
> Behalf Of Alexander Yereschenko
> Sent: Wednesday, August 21, 2019 10:47 PM
> To: sysadmins@lists.altlinux.org
> Subject: Re: [Sysadmins] использовать php5 вместо php7
> 
> 21.08.2019 12:21, Гусев Владислав Юрьевич пишет:
> > День добрый!
> >
> > После установки php7 как версии по умолчанию (через /etc/alternatives) отвалился старый сайт, который не работает с php старше пятёрки.
> > Подскажите, пожалуйста, есть ли возможность в апаче2 для отдельного сайта указать использование php5 (он тоже установлен)?
> >
> > Спасибо.
> >
> Был аналогичный случай, когда на хосте у заказчика только php7, и надо было
> запустить старый сайт на php5. Проблема была в использовании старых функций
> mysql_* для работы базой (эти функции из 7-ки выпилены в пользу
> mysqli_*
> 
> Для совместимости использовался костыль - переопределение отсутствующих
> функций mysql через mysqli
> 
> (можно доработать под свои нужды)
> 
> ==================================================
> ...

Да, я уже рассматривал вариант переписать сайт.
Это печальная задача, учитывая, что я не знаю библиотек php.
Прямо так в лоб, как в приведённом примере, не получится.
Там используется ADOConnection. Надо ещё и с ним разбираться.
В любом случае, это долгая кропотливая работа.

Просто подумалось, если параллельно стоят php5-5.6.38 и php7-7.2.19, то я могу как-то использовать php5, переопределив обработчик php для конкретного сайта.

-- 
Гусев Владислав Юрьевич


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Sysadmins] использовать php5 вместо php7
  2019-08-22  6:28   ` Гусев Владислав Юрьевич
@ 2019-08-22  8:41     ` Anton Gorlov
  0 siblings, 0 replies; 5+ messages in thread
From: Anton Gorlov @ 2019-08-22  8:41 UTC (permalink / raw)
  To: ALT Linux sysadmin discuss

22.08.2019 9:28, Гусев Владислав Юрьевич пишет:
> Да, я уже рассматривал вариант переписать сайт.
> Это печальная задача, учитывая, что я не знаю библиотек php.
> Прямо так в лоб, как в приведённом примере, не получится.
> Там используется ADOConnection. Надо ещё и с ним разбираться.
> В любом случае, это долгая кропотливая работа.
> 
> Просто подумалось, если параллельно стоят php5-5.6.38 и php7-7.2.19, то я могу как-то использовать php5, переопределив обработчик php для конкретного сайта.


В общем случае варианта 3...

1) Ещё 1 апач на соседнем порту, с нужной версией php. 2 библитеки PHP в 
рамках 1 апача не дружат.
2) Пускать как CGI
3) PHP-FPM и на него проксировать


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-08-22  8:41 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-21  9:21 [Sysadmins] использовать php5 вместо php7 Гусев Владислав Юрьевич
2019-08-21 19:46 ` Alexander Yereschenko
2019-08-21 19:49   ` Anton Gorlov
2019-08-22  6:28   ` Гусев Владислав Юрьевич
2019-08-22  8:41     ` Anton Gorlov

ALT Linux sysadmins discussion

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sysadmins/0 sysadmins/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sysadmins sysadmins/ http://lore.altlinux.org/sysadmins \
		sysadmins@lists.altlinux.org sysadmins@lists.altlinux.ru sysadmins@lists.altlinux.com
	public-inbox-index sysadmins

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sysadmins


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git