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 mailing list
[email protected]
https://lists.altlinux.org/mailman/listinfo/sysadmins

Ответить