Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Перенес сайт на ZendFramework на новый хостинг

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Omsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мне сказали, что сайт на Wordpress, дали копию сайта и дамп базы данных.
Я перенес все это на новый хостинг, оказалось, что сайт сделан на фреймворке ZendFramework.
Вот такая ошибка на странице появилась:
 
Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) in /home/l/****/public_html/site/vendor/zendframework/zend-inputfilter/src/InputFilterPluginManager.php on line 30
 
В чем причина?

Всего записей: 898 | Зарегистр. 22-02-2007 | Отправлено: 10:05 13-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Omsk

Цитата:
В чем причина?

а содержимое строчки и той, что до нее?  
 

Цитата:
syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING)  

говорит, что, скорее всего, на предыдущей строке что то не закончено, потому что описание класса начинается невовремя с точки зрения интерпретатора.

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 10:09 13-12-2016
Omsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На старом хостинге все это работало, после переноса эта ошибка. Код не менялся.  
Я на хостинге менял версии PHP и менялись ошибка.
 
Код посмотрю

Всего записей: 898 | Зарегистр. 22-02-2007 | Отправлено: 10:13 13-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Omsk

Цитата:
На старом хостинге все это работало, после переноса эта ошибка. Код не менялся.  

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

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 10:16 13-12-2016 | Исправлено: Mavrikii, 10:17 13-12-2016
AlexRomanenko



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Выглядит, что код нуждается в одной версии PHP а на новом хостинге другой.  Между версиями было изменено как классы работают. Посмотрел как написан InputFilterPluginManager.php, и вижу, что он нуждается в синтаксисе InputFilter::class, который был введён начиная с PHP 5.5. Если перейти на 5.5 как минимум, какие ещё ошибки выдаются?

Всего записей: 304 | Зарегистр. 01-11-2003 | Отправлено: 20:10 13-12-2016
Omsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В том файле вот такой код:

Код:
17)/**
18) * Plugin manager implementation for input filters.
19) *
20) * @method InputFilterInterface|InputInterface get($name)
21) */
22)class InputFilterPluginManager extends AbstractPluginManager
23){
24)    /**
25)     * Default set of plugins
26)     *
27)     * @var string[]
28)     */
29)    protected $invokableClasses = [
30)        'inputfilter' => InputFilter::class,
31)        'collection'  => CollectionInputFilter::class,
32)    ];

 
Когда поставил версию 5.5, то вот такая ошибка:

Код:
 
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000] [1044] Access denied for user '5'@'localhost' to database '    ***'' in /home/l/*/public_html/*/vendor/zendframework/zend-db/src/Adapter/Driver/Pdo/Connection.php:253 Stack trace: #0 /home/l/5/public_html/*/vendor/zendframework/zend-db/src/Adapter/Driver/Pdo/Connection.php(253): PDO->__construct('mysql:dbname=\tl...', '*', '*', Array) #1 /home/l/5/public_html/*/vendor/zendframework/zend-db/src/Adapter/Driver/Pdo/Pdo.php(249): Zend\Db\Adapter\Driver\Pdo\Connection->connect() #2 /home/l/5/public_html/1cbs/vendor/zendframework/zend-db/src/Sql/Sql.php(128): Zend\Db\Adapter\Driver\Pdo\Pdo->createStatement() #3 /home/l/5/public_html/*/vendor/zendframework/zend-db/src/TableGateway/AbstractTableGateway.php(237): Zend\Db\Sql\Sql->prepareStatementForSqlObject(Object(Zend\Db\Sql\Select)) #4 /home/l/5/public_html/*/vendor/zendframework/zend-db/src/TableGateway/AbstractTableGatewa in /home/l/5/public_html/*/vendor/zendframework/zend-servicemanager/src/ServiceManager.php on line 946

 
Показывает про ошибку с драйвером PDO, я помню, что когда переносил сайт, где-то было написано, что нужен драйвер PDO для базы данных.  
Как его включить?
 
В тексте этой ошибки еще имя и пароль от базы данных был...

Всего записей: 898 | Зарегистр. 22-02-2007 | Отправлено: 06:48 14-12-2016 | Исправлено: Omsk, 06:49 14-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Omsk

Цитата:
InputFilter::class

собсно ответили.. 5.5 или выше.
я перешел вообще на 7
 

Цитата:
Показывает про ошибку с драйвером PDO,

нет там ошибки с PDO, основная ошибка вот
Цитата:
Access denied for user '5'@'localhost' to database '    ***''

у пользователя 5@localhost нет доступа к конкретной базе.
 
остальное лишь следствие

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 07:53 14-12-2016 | Исправлено: Mavrikii, 07:53 14-12-2016
Omsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пароль и логин я прописал правильные.
Какие еще могут быть причины недоступа к базе данных?

Всего записей: 898 | Зарегистр. 22-02-2007 | Отправлено: 07:58 14-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Omsk

Цитата:
Пароль и логин я прописал правильные.  

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

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 07:59 14-12-2016 | Исправлено: Mavrikii, 08:00 14-12-2016
Omsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Зашел я в базу данных, там в поле users был другой пользователь: admin, с паролем каким-то.
Я поменял логин и пароль и все равно эта ошибка выходит.

Всего записей: 898 | Зарегистр. 22-02-2007 | Отправлено: 08:06 14-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Omsk

Цитата:
в базу данных, там в поле users был другой пользователь: admin, с паролем каким-то

база данных mysql или база данный движка сайта? скорее всего база движка сайта, так как в mysql.users, обычно, есть еще и root пользователь (если, конечно, mysql сервер не шарится между многими хостами)
 

Цитата:
Я поменял логин и пароль и все равно эта ошибка выходит.

повторяю еще раз. вышеупомянутый пользователь может подключиться к mysql серверу, но не может сделать  
use имя_базы_данных;
 
потому что у него нет на это прав, о чем сообщение об ошибке и говорит.

Цитата:
Access denied for user '5'@'localhost' to database '    ***''  

пользователю 5@localhost запрещен доступ к базе ***
иначе говоря, у него нет привилегий на это - http://sovet-vsem.ru/administrirovanie-mysql-5/sozdaem-novuyu-bazu-shemu-i-daem-na-nee-prava-polzovatelyu/
 

Цитата:
Чтобы дать все права на базу данных cуществующему пользователю:
mysql> GRANT ALL PRIVILEGES ON `<база данных>`.* TO `<имя пользователя>`@`%` WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

 
изначально права на доступ ко всему есть только у рута, если создаете нового пользователя, то нужно указывать к чему и какой у него есть доступ.

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 08:09 14-12-2016 | Исправлено: Mavrikii, 08:13 14-12-2016
Omsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В базу данных Mysql, в которой данные движка и самого сайта.
 
Как разрешить доступ к базе данных? Я нашел поле user_role, где был указан предыдущий пользователь admin, поменял имя пользователя, не помогло.

Всего записей: 898 | Зарегистр. 22-02-2007 | Отправлено: 08:17 14-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Omsk

Цитата:
Я нашел поле user_role, где был указан предыдущий пользователь admin, поменял имя пользователя, не помогло.
 

да елки палки. вы понимаете как mysql работает? у него есть своя база, для своих нужд. называется mysql, в ней таблицы user, db, host, tables_priv и так далее. они используются именно для работы mysql сервера, управления пользователями и правами доступа.
 
то, где вы ковыряетесь, это база движка сайта. она влияет только на работу сайта (его скриптов), проблема же в том, что у того пользователя, с которым скрипт коннектится к mysql серверу, нет прав на доступ к указанной вами в настройках движка сайта базе (в которой и находится user_role и так далее - до работы с этой базой дело не доходит вообще).  
 
как дать права указано выше, проще это делать через любую утилиту с GUI или через тот же phpmyadmin

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 08:21 14-12-2016 | Исправлено: Mavrikii, 08:23 14-12-2016
Omsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Запутался я совсем.  
У меня есть только одна база, дамп которой я выгрузил в созданную пустую.
Хостинг по-умолчанию создал имя пользователя, отличное от того, которое прописано в базе, и зайти можно только под ним.
 
Захожу в базу с помощью PhpMyadmin
 
Сейчас написал так:
GRANT ALL PRIVILEGES ON `base`.* TO `5`@`%` IDENTIFIED BY `1234567q` WITH GRANT OPTION;
И сообщение появляется:
#1044 - Access denied for user '5'@'localhost' to database 'base'
 
Прописывал в настройках фреймворка пользователя Admin, который там есть, и ему нет доступа, хотя пароль поменял ему.

Всего записей: 898 | Зарегистр. 22-02-2007 | Отправлено: 08:46 14-12-2016 | Исправлено: Omsk, 08:49 14-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Omsk

Цитата:
Сейчас написал так

если вы заходите под phpmyadmin, то ничего писать не нужно - там есть ссылка User Accounts, напротив каждого есть ссылка на редактирование привилегий (edit privileges).
там и можно указать, у какого пользователя и какие есть права на доступ к той или иной базе или вообще.
 
но заходить в phpmyadmin нужно под пользователем, у которого есть права на изменение прав.
обычно под рутом.
 

Цитата:
Хостинг по-умолчанию создал имя пользователя, отличное от того, которое прописано в базе, и зайти можно только под ним

ну так и смотрите, к каким базам у этого пользователя есть доступ. пользователь создан, вы залили базу от сайта, но забыли указать что у этого пользователя есть доступ к той базе. не знаю, как реализовано все у вашего хостера.
 
показываю на пальцах.
 
вот,к примеру, у пользователя wordpress нет каких либо глобальных прав
   
 
но зато есть права на доступ к конкретной базе данных (и права ограничены только перечисленными возможностями)
 

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 08:50 14-12-2016 | Исправлено: Mavrikii, 08:58 14-12-2016
Omsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вкладки user accounts и status на моем хостинге нет.
 
Техподдержка пишет, что доступ со стороны MySQL-сервера осуществляется корректно и пользователь имеет все привилегии.
 
Еще пишут, что для работы фреймворка необходима версия php5.4 и нужно обратиться к разработчику насчет скриптов.
 
Буду еще разбираться
 

Всего записей: 898 | Зарегистр. 22-02-2007 | Отправлено: 11:27 14-12-2016 | Исправлено: Omsk, 11:30 14-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Omsk

Цитата:
Вкладки user accounts и status на моем хостинге нет

в предыдущих версиях phpmyadmin это называлось privileges, к примеру
   
 

Цитата:
что для работы фреймворка необходима версия php5.4  

http://php.net/manual/ru/migration55.new-features.php

Цитата:
Разрешение имен класса с помощью ::class

нагло врут. либо вы сами залили одну версию фреймворка, а код сайта создавался под другую версию.
 
но проблема сейчас не имеет отношения к версии php
а так проверить просто - залогиньтесь в phpmyadmin под пользователем 5. и попробуйте выбрать базу base.
если залогинитесь - очевидно, что проблемы с логином/пассом нет. если не сможете работать с base, то очевидно не хватает прав.
 
остальное разбирайтесь уж с поддержкой, мне отсюда не видно что и как там у вас.

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 11:34 14-12-2016 | Исправлено: Mavrikii, 11:37 14-12-2016
Omsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня только такие поля:

 
Есть еще поле user privilegies

 
Фреймворк я не загружал, я вообще не работал с фреймворками, я просто загрузил дамп файлов сайта и дамп базы к нему.
 
Под этим пользователем я нормально вхожу в эту базу. Изменил пароль для пользователя Admin
 
В техподдержке говорят, что нужно обращаться к разработчикам

Всего записей: 898 | Зарегистр. 22-02-2007 | Отправлено: 11:45 14-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Omsk

Цитата:
У меня только такие поля:  

потому что у пользователя 5 нет прав на предоставление прав IS_GRANTABLE = NO
ну и вы смотрите базу INFORMATION_SCHEMA
http://dev.mysql.com/doc/refman/5.7/en/user-privileges-table.html
судя по PRIVILEGE_TYPE - стоят обычные права глобальные для юзверя.
не понимаю, зачем нужно было все закрывать/затирать ибо можно было бы заметить какую то ошибку и она бы подсказала в чем еще дело.
 
Кстати, как вариант - для адреса сервера баз в настройках укажите не localhost, а 127.0.0.1 - там, с включенным ipv6, помнится, разные проблемки бывают

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 11:58 14-12-2016 | Исправлено: Mavrikii, 12:04 14-12-2016
AlexRomanenko



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
В shared hosting вообще разве можно пароли и логины изменять? Может где и можно, но лучше посмотреть какие реквизиты для базы данных были высланы при создания аккаунта.  Взять их, и заменить конфигурации в исходниках. Если не знаете точно где, в Zend Framework должна быть папка  config и там или local.php или global.php. Иногда в коком-то Module.php.   Можно попробовать глобальный поиск Zend\Db\Adapter\Adapter::class который часто именуется как ключ для конфигураций баз данных.

Всего записей: 304 | Зарегистр. 01-11-2003 | Отправлено: 18:57 14-12-2016
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Перенес сайт на ZendFramework на новый хостинг


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru