Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] ocStore-1.5.5.1 не работает с PHP версии 5.5


Recommended Posts

Добрый день, коллеги.

Поставил Kubuntu 14.04 альфу, версия PHP поднялась до 5.5.8.

OpenCart при этом выдаёт следующее сообщение:

 

Unknown: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /wwwroot/@_demoshop_5/vqmod/vqmod.php on line 329Unknown: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /wwwroot/@_demoshop_5/vqmod/vqmod.php on line 329

Можно ли как-то заставить OC работать с этой версией PHP?

Или всё-таки придётся искать способы даунгрейдить версию PHP хотя бы до 5.4?

Надіслати
Поділитися на інших сайтах


По идеи, нужно переключить драйвер с MySQL на MySQLi

А можно поподробнее?

Если в конфиге просто поменять define('DB_DRIVER', 'mysql'); на define('DB_DRIVER', 'mysqli');

Сайт выдаст Error: Could not load database file mysqli!

Нужно как-то конвертировать базу или не хватает каких-то пакетов?

Надіслати
Поділитися на інших сайтах


  • 6 months later...

А можно поподробнее?

Если в конфиге просто поменять define('DB_DRIVER', 'mysql'); на define('DB_DRIVER', 'mysqli');

Сайт выдаст Error: Could not load database file mysqli!

Нужно как-то конвертировать базу или не хватает каких-то пакетов?

 

Ребят, тема актуальна... Как переключить драйвер с MySQL на MySQLi в готовом магазине, подскажите, пожалуйста...

Надіслати
Поділитися на інших сайтах


отсыпьте.

у Condorious`a проблема с vQmod - к автору qPhoria на opencart.com.

Anlenka, https://opencartforum.com/topic/33805-драйвер-базы-данных-mysqli-синтаксическая-ошибка-ск/

Надіслати
Поділитися на інших сайтах

Unknown: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead

 

По идеи, нужно переключить драйвер с MySQL на MySQLi

 

А при чем здесь MySQL/MySQLi ?!

 

В PHP 5.5 убрали функцию PHP - preg_replace() с модификатором /e (модификатор "подмены")

 

The preg_replace() /e modifier is now deprecated. Instead, use the preg_replace_callback() function.

 

 

http://stackoverflow.com/questions/19245205/replace-deprecated-preg-replace-e-with-preg-replace-callback

http://stackoverflow.com/questions/21334934/deprecated-preg-replace-the-e-modifier-is-deprecated-use-preg-replace-call

...

 

В 5.5 её "заменили" в целях безопасности на  preg_replace_callback()

 

Вообще используя PHP 5.5 советую отказаться от "старой" функции preg_replace() (теоретически пользователь/хакер может положить сервер)

 

Или всё-таки придётся искать способы даунгрейдить версию PHP хотя бы до 5.4?

 

 

Пока решение - только даунгрейдить

Надіслати
Поділитися на інших сайтах

  • 1 year later...

Ставил давно другу OSStore на хостинг, где был PHP 5.4, но хостеры решили обновить PHP. В результате получил сообщение deprecated mysql_connect. При поиске попал на эту тему, тут тоже люди ищут решение:

 

 

Ребят, тема актуальна... Как переключить драйвер с MySQL на MySQLi в готовом магазине, подскажите, пожалуйста...

 

Поскольку сам решения не нашел, полез в код исправлять. Переключение в конфиге на драйвер mysqli выдает ошибку, что класс mysqli уже существует.

 

Поэтому решение следующее, в конфиге напишите define('DB_DRIVER', 'storemysqli');

 

И закачайте в каталог system/database файл storemysql.php

 

Содержимое файла

<?php
final class StoreMySQLi {
	private $mysqli;
	
	public function __construct($hostname, $username, $password, $database) {
		$this->mysqli = new mysqli($hostname, $username, $password, $database);
		
		if ($this->mysqli->connect_error) {
      		trigger_error('Error: Could not make a database link (' . $this->mysqli->connect_errno . ') ' . $this->mysqli->connect_error);
		}
		
		$this->mysqli->query("SET NAMES 'utf8'");
		$this->mysqli->query("SET CHARACTER SET utf8");
		$this->mysqli->query("SET CHARACTER_SET_CONNECTION=utf8");
		$this->mysqli->query("SET SQL_MODE = ''");
  	}
		
  	public function query($sql) {
		$result = $this->mysqli->query($sql);

		if ($this->mysqli->errno !== 0) {
			trigger_error('Error: ' . mysqli_error($this->mysqli) . '<br />Error No: ' . mysqli_errno($this->mysqli) . '<br />' . $sql);
			exit();
		}
			if (is_object($result)) {
				$i = 0;
    	
				$data = array();
				
				while ($row = $result->fetch_array()) {
					$data[$i] = $row;
    	
					$i++;
				}

				$result->close();
				
				$query = new stdClass();
				$query->row = isset($data[0]) ? $data[0] : array();
				$query->rows = $data;
				$query->num_rows = $i;
				
				unset($data);
								
				return $query;	
    		} else {
				return true;
			}
	
  	}
	
	public function escape($value) {
		return $this->mysqli->real_escape_string($value);
	}
	
  	public function countAffected() {
    	return $this->mysqli->affected_rows;
  	}

  	public function getLastId() {
    	return $this->mysqli->insert_id;
  	}	
	
	public function __destruct() {
		$this->mysqli->close();
	}
}
?>
Надіслати
Поділитися на інших сайтах


  • 1 year later...
  • 10 months later...

Меняем в vqmod.php (~317 строка)

у меня 629 но не суть, вот ваша строчка она не решала проблему:

$modFilePath = preg_replace_callback('/([^*]+)/', function ($m) { return preg_quote($m[1], "~"); }, $modFilePath);

Ошибка с vqmod на php 5.5 устранена, спасибо.

  • +1 1
Надіслати
Поділитися на інших сайтах


  • 5 months later...

Помогите пожалуйста 3-й день бьюсь.

Ошибка:

2018-05-22 19:49:04 - PHP Unknown:  preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/*****/public_html/*******/vqmod/vqcache/vq2-catalog_controller_product_product.php on line 469

 

Перепробовал все из этого топика. Загружал драйвер. Ничего не помогает :(

Надіслати
Поділитися на інших сайтах


  • 9 months later...
В 26.01.2017 в 17:00, alexmay сказал:

Меняем в vqmod.php (~317 строка)


$modFilePath = preg_replace('/([^*]+)/e', 'preg_quote("$1", "~")', $modFilePath);

на


$modFilePath = preg_replace_callback('/([^*]+)/', function ($m) { return preg_quote($m[1], "~"); }, $modFilePath);

 

Спасибо, помогло 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.