Вилазить "Parse error", що це?
Вилазить "Parse error", що це?
Після оновлення до 3.0.10 виникли проблеми. При спробі зайти в налаштування CAPTCHA чи скористатись "Резерним копіюванням БД", вилазить наступна помилка:
Parse error: syntax error, unexpected T_CASE in /var/www/virtual/volleyball.lviv.ua/htdocs/includes/db/db_tools.php on line 1716
Також на форумі не працює відновлення паролю.
Думав сам розберусь знайшов файл db_tools.php, рядок 1716(подаю більшу частину коду, щоб було зрозуміло):
* Add new column
*/
function sql_column_add($table_name, $column_name, $column_data, $inline = false)
{
$column_data = $this->sql_prepare_column_data($table_name, $column_name, $column_data);
$statements = array();
switch ($this->sql_layer)
{
case 'firebird':
// Does not support AFTER statement, only POSITION (and there you need the column position)
$statements[] = 'ALTER TABLE ' . $table_name . ' ADD "' . strtoupper($column_name) . '" ' . $column_data['column_type_sql'];
break;
case 'mssql':
case 'mssqlnative':
// Does not support AFTER, only through temporary table
$statements[] = 'ALTER TABLE [' . $table_name . '] ADD [' . $column_name . '] ' . $column_data['column_type_sql_default'];
break;
case 'mysql_40':
case 'mysql_41':
$after = (!empty($column_data['after'])) ? ' AFTER ' . $column_data['after'] : '';
$statements[] = 'ALTER TABLE `' . $table_name . '` ADD COLUMN `' . $column_name . '` ' . $column_data['column_type_sql'] . $after;
break;
case 'oracle':
// Does not support AFTER, only through temporary table
$statements[] = 'ALTER TABLE ' . $table_name . ' ADD ' . $column_name . ' ' . $column_data['column_type_sql'];
break;
case 'postgres':
// Does not support AFTER, only through temporary table
if (version_compare($this->db->sql_server_info(true), '8.0', '>='))
{
$statements[] = 'ALTER TABLE ' . $table_name . ' ADD COLUMN "' . $column_name . '" ' . $column_data['column_type_sql'];
break;
1716 case 'sqlite':
if ($inline && $this->return_statements)
{
return $column_name . ' ' . $column_data['column_type_sql'];
}
if (version_compare(sqlite_libversion(), '3.0') == -1)
{
$sql = "SELECT sql
FROM sqlite_master
WHERE type = 'table'
AND name = '{$table_name}'
ORDER BY type DESC, name;";
$result = $this->db->sql_query($sql);
if (!$result)
{
break;
}
$row = $this->db->sql_fetchrow($result);
$this->db->sql_freeresult($result);
$statements[] = 'begin';
// Create a backup table and populate it, destroy the existing one
$statements[] = preg_replace('#CREATE\s+TABLE\s+"?' . $table_name . '"?#i', 'CREATE TEMPORARY TABLE ' . $table_name . '_temp', $row['sql']);
$statements[] = 'INSERT INTO ' . $table_name . '_temp SELECT * FROM ' . $table_name;
$statements[] = 'DROP TABLE ' . $table_name;
preg_match('#\((.*)\)#s', $row['sql'], $matches);
$new_table_cols = trim($matches[1]);
$old_table_cols = preg_split('/,(?![\s\w]+\))/m', $new_table_cols);
$column_list = array();
foreach ($old_table_cols as $declaration)
{
$entities = preg_split('#\s+#', trim($declaration));
if ($entities[0] == 'PRIMARY')
{
continue;
}
$column_list[] = $entities[0];
}
$columns = implode(',', $column_list);
$new_table_cols = $column_name . ' ' . $column_data['column_type_sql'] . ',' . $new_table_cols;
Що це може бути?
Parse error: syntax error, unexpected T_CASE in /var/www/virtual/volleyball.lviv.ua/htdocs/includes/db/db_tools.php on line 1716
Також на форумі не працює відновлення паролю.
Думав сам розберусь знайшов файл db_tools.php, рядок 1716(подаю більшу частину коду, щоб було зрозуміло):
* Add new column
*/
function sql_column_add($table_name, $column_name, $column_data, $inline = false)
{
$column_data = $this->sql_prepare_column_data($table_name, $column_name, $column_data);
$statements = array();
switch ($this->sql_layer)
{
case 'firebird':
// Does not support AFTER statement, only POSITION (and there you need the column position)
$statements[] = 'ALTER TABLE ' . $table_name . ' ADD "' . strtoupper($column_name) . '" ' . $column_data['column_type_sql'];
break;
case 'mssql':
case 'mssqlnative':
// Does not support AFTER, only through temporary table
$statements[] = 'ALTER TABLE [' . $table_name . '] ADD [' . $column_name . '] ' . $column_data['column_type_sql_default'];
break;
case 'mysql_40':
case 'mysql_41':
$after = (!empty($column_data['after'])) ? ' AFTER ' . $column_data['after'] : '';
$statements[] = 'ALTER TABLE `' . $table_name . '` ADD COLUMN `' . $column_name . '` ' . $column_data['column_type_sql'] . $after;
break;
case 'oracle':
// Does not support AFTER, only through temporary table
$statements[] = 'ALTER TABLE ' . $table_name . ' ADD ' . $column_name . ' ' . $column_data['column_type_sql'];
break;
case 'postgres':
// Does not support AFTER, only through temporary table
if (version_compare($this->db->sql_server_info(true), '8.0', '>='))
{
$statements[] = 'ALTER TABLE ' . $table_name . ' ADD COLUMN "' . $column_name . '" ' . $column_data['column_type_sql'];
break;
1716 case 'sqlite':
if ($inline && $this->return_statements)
{
return $column_name . ' ' . $column_data['column_type_sql'];
}
if (version_compare(sqlite_libversion(), '3.0') == -1)
{
$sql = "SELECT sql
FROM sqlite_master
WHERE type = 'table'
AND name = '{$table_name}'
ORDER BY type DESC, name;";
$result = $this->db->sql_query($sql);
if (!$result)
{
break;
}
$row = $this->db->sql_fetchrow($result);
$this->db->sql_freeresult($result);
$statements[] = 'begin';
// Create a backup table and populate it, destroy the existing one
$statements[] = preg_replace('#CREATE\s+TABLE\s+"?' . $table_name . '"?#i', 'CREATE TEMPORARY TABLE ' . $table_name . '_temp', $row['sql']);
$statements[] = 'INSERT INTO ' . $table_name . '_temp SELECT * FROM ' . $table_name;
$statements[] = 'DROP TABLE ' . $table_name;
preg_match('#\((.*)\)#s', $row['sql'], $matches);
$new_table_cols = trim($matches[1]);
$old_table_cols = preg_split('/,(?![\s\w]+\))/m', $new_table_cols);
$column_list = array();
foreach ($old_table_cols as $declaration)
{
$entities = preg_split('#\s+#', trim($declaration));
if ($entities[0] == 'PRIMARY')
{
continue;
}
$column_list[] = $entities[0];
}
$columns = implode(',', $column_list);
$new_table_cols = $column_name . ' ' . $column_data['column_type_sql'] . ',' . $new_table_cols;
Що це може бути?
- Support
- Адміністратор сайту
- Повідомлень: 231
- З нами з: 03 грудня 2007, 23:34
- Звідки: Lutsk
- Контактна інформація:
Re: Вилазить "Parse error", що це?
Спробуйте скопіювати усі файли з версії 3.0.10 з папки \includes\db на хостинг ще раз
А чому не оновлюэте до останньої 3.0.11 ?
А чому не оновлюэте до останньої 3.0.11 ?
Re: Вилазить "Parse error", що це?
Просто попереписувати наявні файли?Support писав:Спробуйте скопіювати усі файли з версії 3.0.10 з папки \includes\db на хостинг ще раз
Мені здається, що правильніше спочатку розібратись з наявною проблемою, а потім оновлюватись!?Support писав:А чому не оновлюэте до останньої 3.0.11 ?
- Support
- Адміністратор сайту
- Повідомлень: 231
- З нами з: 03 грудня 2007, 23:34
- Звідки: Lutsk
- Контактна інформація:
Re: Вилазить "Parse error", що це?
так, перезалити файли. Я маю на увазі чому оновлювали до 3.0.10, а не відразу до 3.0.11 ???
Re: Вилазить "Parse error", що це?
Все просто. На той момент, це було останнє оновлення.Support писав:Я маю на увазі чому оновлювали до 3.0.10, а не відразу до 3.0.11 ???
- Support
- Адміністратор сайту
- Повідомлень: 231
- З нами з: 03 грудня 2007, 23:34
- Звідки: Lutsk
- Контактна інформація:
Re: Вилазить "Parse error", що це?
Версія 3.0.11 вийшла 25.08.2012, а по повідомлення від 30.03.2013.
Re: Вилазить "Parse error", що це?
Маєте оновлення 3.0.10? Не можу знайти його.Support писав:так, перезалити файли. Я маю на увазі чому оновлювали до 3.0.10, а не відразу до 3.0.11 ???
Re: Вилазить "Parse error", що це?
Мені потрібно 3.0.9_to_3.0.10.Sherlock писав:http://www.phpbb.com/files/release/phpB ... 3.0.11.zip