* [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