Думаю, что наступает пора заняться модернизацией кода для IPB 1.3 под PHP 7 для тех, кто до сих пор пользуется версией IPB 1.3 и не хочет с ней расставаться. В функционале PHP 7, по-быстрому говоря, теперь не признают бывшие стандартные функции, содержащие в своем названии mysql , - теперь все функции должны идти как mysqli: это касается абсолютно всех функций будь-то mysql_query() -> mysqli_query() , mysql_fetch_row() -> mysqli_fetch_row() и даже mysql_error() -> mysql_error(). Причем, ко всему прочему, данные функции i требуют обязательного указаниия, как минимум 2-х параметров, а где-то что-то должно быть целым итд. И это только начало. Далее по порядку, попытался насколько мог подправить код, но, все равно, хочется попросить еще помощи и от участников форума. Также необходимо, чтобы были установлены все патчи для PHP 5 (Включая PHP 5.4.x и выше из этой темы http://forums.ibresource.ru/topic/19364-php-5-direktivy-php-dlia-normalnoj-raboty-s-ipb-13/)и MySQL 5. 1) Файл: mySQL.php - тут правок полно. В частности, было:
итд по всему файлу, включая выводы ошибок. Подробно расписывать не буду - прикреплю лучше файл mySQL.php к посту, а там сами посмотрите. mySQL.php
2) index.php:
Там было вот такое:
class info {
var $member = array();
var $input = array();
var $session_id = "";
var $base_url = "";
var $vars = "";
var $skin_id = "0"; // Skin Dir name
var $skin_rid = ""; // Real skin id (numerical only)
var $lang_id = "en";
var $skin = "";
var $lang = "";
var $server_load = 0;
var $version = "v1.3";
var $lastclick = "";
var $location = "";
var $debug_html = "";
var $perm_id = "";
var $forum_read = array();
var $topic_cache = "";
var $session_type = "";
function _info () {
global $sess, $std, $DB, $INFO;
$this->vars = $INFO;
$this->vars['TEAM_ICON_URL'] = $INFO['html_url'] . '/team_icons';
$this->vars['AVATARS_URL'] = $INFO['html_url'] . '/avatars';
$this->vars['EMOTICONS_URL'] = $INFO['html_url'] . '/emoticons';
$this->vars['mime_img'] = $INFO['html_url'] . '/mime_types';
}
}
в PHP 7 это приводит к постоянному ворнингу на всех страницах:
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP
необходимо в этом классе function _info () заменить на: function __construct () То же самое нужно произвести практически в 85% файлах форума, где функция в классе имеет то же имя, что и сам класс (заменить функцию на function __construct ()) - проверил - работает и на версиях PHP 5.2.х и выше. 3)
index.php
Если у кого-то был установлен мод типа cookie IP ban, то
Если у кого установлен мод учета поисковиков mod_spider, то получаем ошибку:
Fatal error: 'break' not in the 'loop' or 'switch' context in
//-- mod_spider begin
if ($IN['act'] == "op" && $IN['code'] == "spider") {
if (file_exists(ROOT_PATH."sources/mods/spider/mod_spider_ad_func.php")) {
require ROOT_PATH."sources/mods/spider/mod_spider_ad_func.php";
} else {
die("Could not call required function from file 'sources/mods/spider/mod_spider_ad_func.php'<br>Does it exist?");
}
break;
}
//-- mod_spider end
if ( ! $member = @mysql_fetch_array( $query_id, MYSQL_ASSOC ) )
на:
if ( ! $member = @mysqli_fetch_array( $query_id, MYSQLI_ASSOC ) )
вот такое:
$query_id = @mysql_query("SELECT m.mgroup, m.password, m.name, m.id FROM {$db_info['tbl_prefix']}members m
WHERE m.name='".addslashes($username)."' LIMIT 1"
,$DB);
заменил на такое:
$query_id = @mysqli_query($DB, "SELECT m.mgroup, m.password, m.name, m.id FROM {$db_info['tbl_prefix']}members m
WHERE m.name='".addslashes($username)."' LIMIT 1"
);
это:
@mysql_close();
на это:
@mysqli_close($access);
прикреплю файл, т.к. еще там есть участки ipchat.php
6) jcounter.php (это файл, по-моему из мода статистики, в оригинальном IPB его нет, файл лежит в корне (где index.php)
postwarn.php (это файл, по-моему из мода предупреждений или защиты от перебора пароля Secure login - уже не помню, в оригинальном IPB его нет, файл лежит в \sources\misc\
function do_welcomepanel() {
global $DB, $ibforums, $std;
if ( $ibforums->vars['portal_welcomepanel'] )
{
if ($ibforums->member['id']) {
$DB->query("SELECT * FROM ibf_members WHERE id='".$ibforums->member['id']."'");
$member = $DB->fetch_row();
$avatar_size = $member['avatar_size'];
list($w,$h) = split("x","$avatar_size",2);
на это:
function do_welcomepanel() {
global $DB, $ibforums, $std;
if ( $ibforums->vars['portal_welcomepanel'] )
{
if ($ibforums->member['id']) {
$DB->query("SELECT * FROM ibf_members WHERE id='".$ibforums->member['id']."'");
$member = $DB->fetch_row();
$avatar_size = $member['avatar_size'];
list($w,$h) = explode("x","$avatar_size",2);
9) У кого установлен мод наград (Award mod) в Topics.php есть участок в конце функции:
// Parse the member info
//--------------------------------------------------------------
function parse_member($member=array()) {
, относящийся в данному моду:
$n = mysql_num_rows(mysql_query("SELECT * FROM ibf_awards WHERE mid='{$member['id']}'"));
if ($n > 0)
{
$member['awards'] = "Награды: <a href='{$ibforums->vars['board_url']}/index.php?act=Awards&id={$member['id']}'>$n</a>";
}
else
{
$member['awards'] = "Награды: <i>Нет</i>";
вот это хозяйство:
$n = mysql_num_rows(mysql_query("SELECT * FROM ibf_awards WHERE mid='{$member['id']}'"));
if ($n > 0)
{
$member['awards'] = "Награды: <a href='{$ibforums->vars['board_url']}/index.php?act=Awards&id={$member['id']}'>$n</a>";
}
else
{
$member['awards'] = "Награды: <i>Нет</i>";
}
в PHP 7 приводит к фатальной ошибке и для mysqli_query требуется задать еще параметры, поэтому удалил этот код:
10)
У тех, у кого установлены моды BB-кодов, Secure login (Для тех, кто не в курсе поясню, что пока (на момент написания этого поста есть сайт https://www1.rwb-essen.de/ibforen/index.php?ind=downloads&op=section_view&idev=1, где еще чего-то там кумекают по версии IPB 1.3 Прикреплю к данному посту еще файлы оттуда: Mod_mySQL5_1_0_2.zip - коррекция под MySQL 5.x . Mod_sec_update_131_2_8_0.zip - это обновление безопасности от немцев (последняя правка 14.06.2015), включающая навероты по безопасности, тот самый антибрут и пр. - ставить или не ставить - решайте сами. Update_IPB_13_131.zip - Это Обновление с IPB 1.3 до IPB 1.3.1)
Так вот, если уставолены указанные выше моды, в т.ч. мод enhanced_topics, то в файлах типа mod_enhanced_topics_install.php
найти:
$query_id = mysql_query($the_query);
if ($query_id) { mysql_free_result( $query_id ); };
11) Кстати, при тестировании на MySQL 5.7 на OpenServer необходимо в C:\OpenServer\userdata\config\MySQL-5.7_my.ini установить хотя бы:
sql-mode=""
т.е., убрать все между кавычками, иначе это будет приводить к ошибкам MySQL 5.7:
MySQL 5.7 (Apache 2.4, PHP 5.6 (еще даже!)). Так при тесте на локалке с условным именем БД ddd на индексной странице получил подарок:
mySQL query error: SELECT g.*, m.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) WHERE m.last_activity >= '1471640400' AND m.mgroup <> '2' GROUP BY m.name ORDER BY m.last_activity DESC
mySQL error: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ddd.g.g_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
mySQL error code:
На showtopic получил:
mySQL query error: SELECT p.*,
m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name,m.icq_number,
m.signature, m.website,m.yahoo,m.integ_msg,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn,
g.g_id, g.g_title, g.g_icon, g.g_dohtml, s.login_type, s.running_time, g.g_hide_from_list, g.g_can_view_on_off
FROM ibf_posts p
LEFT JOIN ibf_members m ON (p.author_id=m.id)
LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup)
LEFT JOIN ibf_sessions s ON (s.member_id=p.author_id AND s.member_id<>0 AND s.member_id IS NOT NULL)
LEFT JOIN ibf_pfields_content pc ON (pc.member_id=p.author_id)
WHERE p.topic_id=473 and p.queued != 1
GROUP BY pid ORDER BY p.post_date asc LIMIT 0, 30
mySQL error: Expression #48 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ddd.s.login_type' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
на showforum получил ошибку неявной записи:
mySQL query error: UPDATE ibf_sessions SET member_name='',member_id='0',member_group='2',login_type='0', running_time='1471718686', in_forum='332', in_topic='', location='SF,,' WHERE id='a85128f6bfeb1d83f6d48b296562257d'
mySQL error: Incorrect integer value: '' for column 'in_topic' at row 1
mySQL error code:
Постинговые, вроде, открываются. Например, вот такое: index.php?act=Post&CODE=06&f=332&t=473&p=714 При этом предпросмотр работает, а при отправке данных - ошибка БД абсолютно без информации в окне.
admin.php и индексная там - открываются. При этом страницы многих пунктов меню открываются, а, например, Настройка языковвыдает ошибку:
mySQL query error: select ibf_languages.*, count(ibf_members.id) as mcount from ibf_languages left join ibf_members on(ibf_members.language=ibf_languages.ldir) where (ibf_members.language is not null or ibf_members.language = 'en') group by ibf_languages.ldir order by ibf_languages.lname
mySQL error: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ddd.ibf_languages.lid' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
В MySQL 5.6 все работает. Как видно, в 5.7 надо решать вопросы нововведений, из-за которых идут ошибки
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.
Вопрос
dimitry
Думаю, что наступает пора заняться модернизацией кода для IPB 1.3 под PHP 7 для тех, кто до сих пор пользуется версией IPB 1.3 и не хочет с ней расставаться.
В функционале PHP 7, по-быстрому говоря, теперь не признают бывшие стандартные функции, содержащие в своем названии mysql , - теперь все функции должны идти как mysqli: это касается абсолютно всех функций будь-то mysql_query() -> mysqli_query() , mysql_fetch_row() -> mysqli_fetch_row() и даже mysql_error() -> mysql_error(). Причем, ко всему прочему, данные функции i требуют обязательного указаниия, как минимум 2-х параметров, а где-то что-то должно быть целым итд. И это только начало. Далее по порядку, попытался насколько мог подправить код, но, все равно, хочется попросить еще помощи и от участников форума.
Также необходимо, чтобы были установлены все патчи для PHP 5 (Включая PHP 5.4.x и выше из этой темы http://forums.ibresource.ru/topic/19364-php-5-direktivy-php-dlia-normalnoj-raboty-s-ipb-13/)и MySQL 5.
1)
Файл: mySQL.php - тут правок полно.
В частности, было:
/*========================================================================*/ // Connect to the database /*========================================================================*/ function connect() { //-------------------------- // Done SQL prefix yet? //-------------------------- if ( ! defined( 'SQL_PREFIX' ) ) { $this->obj['sql_tbl_prefix'] = $this->obj['sql_tbl_prefix'] ? $this->obj['sql_tbl_prefix'] : 'ibf_'; define( 'SQL_PREFIX', $this->obj['sql_tbl_prefix'] ); } if ($this->obj['persistent']) { $this->connection_id = mysql_pconnect( $this->obj['sql_host'] , $this->obj['sql_user'] , $this->obj['sql_pass'] ); } else { $this->connection_id = mysql_connect( $this->obj['sql_host'] , $this->obj['sql_user'] , $this->obj['sql_pass'] ); } if ( !mysql_select_db($this->obj['sql_database'], $this->connection_id) ) { echo ("ERROR: Cannot find database ".$this->obj['sql_database']); } mysql_query("SET NAMES 'cp1251'"); mysql_query("SET COLLATION_CONNECTION=CP1251_GENERAL_CI"); }Сделал так:
/*========================================================================*/ // Connect to the database /*========================================================================*/ function connect() { //-------------------------- // Done SQL prefix yet? //-------------------------- if ( ! defined( 'SQL_PREFIX' ) ) { $this->obj['sql_tbl_prefix'] = $this->obj['sql_tbl_prefix'] ? $this->obj['sql_tbl_prefix'] : 'ibf_'; define( 'SQL_PREFIX', $this->obj['sql_tbl_prefix'] ); } if ($this->obj['persistent']) { $this->connection_id = mysqli_pconnect( $this->obj['sql_host'] , $this->obj['sql_user'] , $this->obj['sql_pass'] , $this->obj['sql_database'] ); } else { $this->connection_id = mysqli_connect( $this->obj['sql_host'] , $this->obj['sql_user'] , $this->obj['sql_pass'] , $this->obj['sql_database'] ); } if ( !$this->connection_id) { echo ("ERROR: Cannot find database ".$this->obj['sql_database']); } mysqli_query($this->connection_id, "SET NAMES 'cp1251'"); mysqli_query($this->connection_id, "SET COLLATION_CONNECTION=CP1251_GENERAL_CI"); }далее в файле:
$this->query_id = mysql_query($the_query, $this->connection_id);
заменено на:
$this->query_id = mysqli_query($this->connection_id, $the_query);
Т.е. параметры просто меняются местами.
далее:
$this->record_row = mysql_fetch_array($query_id, MYSQL_ASSOC);
заменено на:
$this->record_row = mysqli_fetch_array($query_id, MYSQLI_ASSOC);
итд по всему файлу, включая выводы ошибок. Подробно расписывать не буду - прикреплю лучше файл mySQL.php к посту, а там сами посмотрите.
mySQL.php
2)
index.php:
Там было вот такое:
class info { var $member = array(); var $input = array(); var $session_id = ""; var $base_url = ""; var $vars = ""; var $skin_id = "0"; // Skin Dir name var $skin_rid = ""; // Real skin id (numerical only) var $lang_id = "en"; var $skin = ""; var $lang = ""; var $server_load = 0; var $version = "v1.3"; var $lastclick = ""; var $location = ""; var $debug_html = ""; var $perm_id = ""; var $forum_read = array(); var $topic_cache = ""; var $session_type = ""; function _info () { global $sess, $std, $DB, $INFO; $this->vars = $INFO; $this->vars['TEAM_ICON_URL'] = $INFO['html_url'] . '/team_icons'; $this->vars['AVATARS_URL'] = $INFO['html_url'] . '/avatars'; $this->vars['EMOTICONS_URL'] = $INFO['html_url'] . '/emoticons'; $this->vars['mime_img'] = $INFO['html_url'] . '/mime_types'; } }в PHP 7 это приводит к постоянному ворнингу на всех страницах:
необходимо в этом классе function _info () заменить на: function __construct ()
То же самое нужно произвести практически в 85% файлах форума, где функция в классе имеет то же имя, что и сам класс (заменить функцию на function __construct ()) - проверил - работает и на версиях PHP 5.2.х и выше.
3)
index.php
Если у кого-то был установлен мод типа cookie IP ban, то
$usersip = getenv("REMOTE_ADDR"); if(!$_COOKIE["CookieIp"]) { // Mmmm cookie setcookie("CookieIp", $usersip, time() + 99*99*99*99); }99*99*99*99 - вот это дело уже приводит к ворнингу
сделал так:
setcookie("CookieIp", $usersip, time() + 9999999);4)
admin.php:
Если у кого установлен мод учета поисковиков mod_spider, то получаем ошибку:
//-- mod_spider begin if ($IN['act'] == "op" && $IN['code'] == "spider") { if (file_exists(ROOT_PATH."sources/mods/spider/mod_spider_ad_func.php")) { require ROOT_PATH."sources/mods/spider/mod_spider_ad_func.php"; } else { die("Could not call required function from file 'sources/mods/spider/mod_spider_ad_func.php'<br>Does it exist?"); } break; } //-- mod_spider endубираем из этого участка:
5)
ipchat.php:
$DB = @mysql_connect( $db_info['host'], $db_info['user'], $db_info['pass'] ); if ( ! @mysql_select_db( $db_info['database'] ) ) { die_nice(); //-- script exits --// }заменен на:
$DB = @mysqli_connect( $db_info['host'], $db_info['user'], $db_info['pass'], $db_info['database'] ); if ( ! $DB ) { die_nice(); //-- script exits --// }на:
вот такое:
$query_id = @mysql_query("SELECT m.mgroup, m.password, m.name, m.id FROM {$db_info['tbl_prefix']}members m WHERE m.name='".addslashes($username)."' LIMIT 1" ,$DB);заменил на такое:
$query_id = @mysqli_query($DB, "SELECT m.mgroup, m.password, m.name, m.id FROM {$db_info['tbl_prefix']}members m WHERE m.name='".addslashes($username)."' LIMIT 1" );это:
на это:
прикреплю файл, т.к. еще там есть участки
ipchat.php
6)
jcounter.php (это файл, по-моему из мода статистики, в оригинальном IPB его нет, файл лежит в корне (где index.php)
вот такого там до черта:
переставил:
опять же, прикрепляю:
jcounter.php
7)
postwarn.php (это файл, по-моему из мода предупреждений или защиты от перебора пароля Secure login - уже не помню, в оригинальном IPB его нет, файл лежит в \sources\misc\
Файл мизерный. Вот его весь старый код:
<?php /* +--------------------------------------------------------------------------- | | > : Advanced Warn | +-------------------------------------------------------------------------- */ require('../../conf_global.php'); $connection_id = mysql_connect($INFO['sql_host'], $INFO['sql_user'], $INFO['sql_pass']); mysql_select_db($INFO['sql_database'], $connection_id); mysql_query("UPDATE ".$INFO['sql_tbl_prefix']."members SET `set_warn` = 0 WHERE `warn_exp` < ".time()); mysql_close($connection_id);переделал так:
<?php /* +--------------------------------------------------------------------------- | | > : Advanced Warn | +-------------------------------------------------------------------------- */ require('../../conf_global.php'); $connection_id = mysqli_connect($INFO['sql_host'], $INFO['sql_user'], $INFO['sql_pass'], $INFO['sql_database']); mysqli_query($connection_id, "UPDATE ".$INFO['sql_tbl_prefix']."members SET `set_warn` = 0 WHERE `warn_exp` < ".time()); mysqli_close($connection_id); ?>8)
А вот это уже серьезно и из оригинального кода IPB:
functions.php:
Найти:
foreach ($user_raw_permissions AS $data) { $new_data = split(':', $data); $this->member['forum_perms'][ $new_data[0] ] = $new_data[1]; }это приводит к ошибке, поэтому заменил split() на explode()
вот так:
foreach ($user_raw_permissions AS $data) { $new_data = explode(':', $data); $this->member['forum_perms'][ $new_data[0] ] = $new_data[1]; }то же для ad_member.php:
это
$user_raw_permissions = split(';', $mem['forum_access']); foreach ($user_raw_permissions AS $data) { $new_data = split(':', $data); $user_permissions[ $new_data[0] ] = $new_data[1]; }заменить на:
$user_raw_permissions = explode(';', $mem['forum_access']); foreach ($user_raw_permissions AS $data) { $new_data = explode(':', $data); $user_permissions[ $new_data[0] ] = $new_data[1]; }modules\mod_banka.php:
это:
$banarr = split(":", $val);на:
$banarr = explode(":", $val);sources\Portal.php:
это:
function do_welcomepanel() { global $DB, $ibforums, $std; if ( $ibforums->vars['portal_welcomepanel'] ) { if ($ibforums->member['id']) { $DB->query("SELECT * FROM ibf_members WHERE id='".$ibforums->member['id']."'"); $member = $DB->fetch_row(); $avatar_size = $member['avatar_size']; list($w,$h) = split("x","$avatar_size",2);на это:
function do_welcomepanel() { global $DB, $ibforums, $std; if ( $ibforums->vars['portal_welcomepanel'] ) { if ($ibforums->member['id']) { $DB->query("SELECT * FROM ibf_members WHERE id='".$ibforums->member['id']."'"); $member = $DB->fetch_row(); $avatar_size = $member['avatar_size']; list($w,$h) = explode("x","$avatar_size",2);9)
У кого установлен мод наград (Award mod) в Topics.php есть участок в конце функции:
// Parse the member info //-------------------------------------------------------------- function parse_member($member=array()) {, относящийся в данному моду:
$n = mysql_num_rows(mysql_query("SELECT * FROM ibf_awards WHERE mid='{$member['id']}'")); if ($n > 0) { $member['awards'] = "Награды: <a href='{$ibforums->vars['board_url']}/index.php?act=Awards&id={$member['id']}'>$n</a>"; } else { $member['awards'] = "Награды: <i>Нет</i>";вот это хозяйство:
$n = mysql_num_rows(mysql_query("SELECT * FROM ibf_awards WHERE mid='{$member['id']}'")); if ($n > 0) { $member['awards'] = "Награды: <a href='{$ibforums->vars['board_url']}/index.php?act=Awards&id={$member['id']}'>$n</a>"; } else { $member['awards'] = "Награды: <i>Нет</i>"; }в PHP 7 приводит к фатальной ошибке и для mysqli_query требуется задать еще параметры, поэтому удалил этот код:
10)
У тех, у кого установлены моды BB-кодов, Secure login (Для тех, кто не в курсе поясню, что пока (на момент написания этого поста есть сайт https://www1.rwb-essen.de/ibforen/index.php?ind=downloads&op=section_view&idev=1, где еще чего-то там кумекают по версии IPB 1.3
Прикреплю к данному посту еще файлы оттуда:
Mod_mySQL5_1_0_2.zip - коррекция под MySQL 5.x .
Mod_sec_update_131_2_8_0.zip - это обновление безопасности от немцев (последняя правка 14.06.2015), включающая навероты по безопасности, тот самый антибрут и пр. - ставить или не ставить - решайте сами.
Update_IPB_13_131.zip - Это Обновление с IPB 1.3 до IPB 1.3.1)
Так вот, если уставолены указанные выше моды, в т.ч. мод enhanced_topics, то в файлах типа mod_enhanced_topics_install.php
найти:
$query_id = mysql_query($the_query); if ($query_id) { mysql_free_result( $query_id ); };заменить на:
$query_id = mysqli_query($this->connection_id, $the_query); if ($query_id) { mysqli_free_result( $query_id ); };итп.
11)
Кстати, при тестировании на MySQL 5.7 на OpenServer необходимо в C:\OpenServer\userdata\config\MySQL-5.7_my.ini
установить хотя бы:
т.е., убрать все между кавычками, иначе это будет приводить к ошибкам MySQL 5.7:
MySQL 5.7 (Apache 2.4, PHP 5.6 (еще даже!)). Так при тесте на локалке с условным именем БД ddd на индексной странице получил подарок:
На showtopic получил:
mySQL query error: SELECT p.*, m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name,m.icq_number, m.signature, m.website,m.yahoo,m.integ_msg,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn, g.g_id, g.g_title, g.g_icon, g.g_dohtml, s.login_type, s.running_time, g.g_hide_from_list, g.g_can_view_on_off FROM ibf_posts p LEFT JOIN ibf_members m ON (p.author_id=m.id) LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) LEFT JOIN ibf_sessions s ON (s.member_id=p.author_id AND s.member_id<>0 AND s.member_id IS NOT NULL) LEFT JOIN ibf_pfields_content pc ON (pc.member_id=p.author_id) WHERE p.topic_id=473 and p.queued != 1 GROUP BY pid ORDER BY p.post_date asc LIMIT 0, 30 mySQL error: Expression #48 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ddd.s.login_type' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_byна showforum получил ошибку неявной записи:
Постинговые, вроде, открываются. Например, вот такое: index.php?act=Post&CODE=06&f=332&t=473&p=714
При этом предпросмотр работает, а при отправке данных - ошибка БД абсолютно без информации в окне.
admin.php и индексная там - открываются. При этом страницы многих пунктов меню открываются, а, например, Настройка языков выдает ошибку:
В MySQL 5.6 все работает. Как видно, в 5.7 надо решать вопросы нововведений, из-за которых идут ошибки
https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
Изменено пользователем dimitryСсылка на комментарий
Поделиться на других сайтах
8 ответов на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.