Соединение MySQL в CakePHP -> Почему я продолжаю получать фатальную ошибку с превышением 30 секунд?

#php #mysql #cakephp #fatal-error

#php #mysql #cakephp #фатальная ошибка

Вопрос:

Вот фрагмент кода, который я получил из какого-то учебного блога:

 <?php
class PersonalBlogController extends AppController {

    var $name = 'PersonalBlog';
    var $uses = array('PersonalBlog');

    function index(){
        //ini_set('max_execution_time', 300);
        debug($this->PersonalBlog->findAll());
        //debug($this->PersonalBlog->find('all'));
    }
}?>
  

Я видел несколько других случаев фатальной ошибки в max time limit из других сообщений. Но мое, вероятно, самое отвратительное. Фатальная ошибка ограничения по времени в 30 секунд продолжает появляться даже после того, как я изменил переменную max_execution_time в php.ini. Даже после изменения его на 60 или 300 секунд сообщение об ошибке остается неизменным. Он говорит, что ограничение по времени в 30 секунд превышено.

Затем я последовал альтернативному решению из аналогичного вопроса, которое заключается в том, чтобы сделать это вместо этого: ini_set('max_execution_time', 300); (См. Мой прокомментированный код выше).

Ошибка исчезла. Однако то, что происходит после этого, это:

Предупреждение (2): PDO::__construct(): [2002] Попытка подключения завершилась неудачей, поскольку подключенная сторона этого не сделала (пытается подключиться через tcp: // localhost: 3306) [COREcakelibsmodeldatasourcesdbodbo_mysql.php, строка 155] ….. ….. блаблабла… Фатальная ошибка: вызов функции-члена getAttribute() для не-объекта в C:Serverwwwmyserver.devpublic_htmlcakephp-cakephp-7fbf7a4cakelibsmodeldatasourcesdbodbo_mysql.php в строке 259

Итак, я понял, что у меня на самом деле установлено два сервера MySQL. Новейший (5.5.11) находится на порту 3307, а не на порту 3306! Вот почему я затем изменил настройки своего драйвера в dbo_mysql.php:

 /**
 * Base configuration settings for MySQL driver
 *
 * @var array
 */
    protected $_baseConfig = array(
        'persistent' => true,
        'host' => 'localhost',
        'login' => 'root',
        'password' => 'mysqlpassword',
        'database' => 'personal_blog',
        'port' => '3307'
    );
  

Все остальные настройки в норме; У меня те же настройки базы данных для app> config> файл базы данных, как вы можете видеть здесь:

 public $default = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'root',
        'password' => 'mysqlpassword',
        'database' => 'personal_blog',
            'port' => 3307,
        'prefix' => '',
    );
  

После этих изменений предупреждение все еще появляется…Я действительно чувствую, что меня сейчас вырвет

Буду признателен за любую помощь. спасибо

Комментарии:

1. Я думаю, что вы что-то пропустили в тексте сообщения об ошибке: ...party did not (trying . Есть ли какой-нибудь текст между not и (trying ?

Ответ №1:

Вам не нужно редактировать dbo_config для управления настройками порта. Все эти ключи доступны для использования в database.php файл в вашем приложении / config / папка.

На самом деле у вас вообще не должно быть ваших личных значений по умолчанию в файле dbo — что бы вы ни делали, вам никогда не следует редактировать какие-либо основные файлы.

Как только вы настроите свой порт ТОЛЬКО в database.php файл и ваш драйвер dbo возвращаются к тому, который поставлялся с cake, вам следует удалить все файлы в / tmp / cache и установить debug > 0 в app/config/core.php

Обновите, и если ошибка все еще возникает, мы знаем, что что-то не так на уровне php.ini / .htaccess или ini_set. Попробуйте скорректировать значение, а затем загрузить представление, содержащее

 <?php
    phpinfo( );
?>
  

и посмотрите, действительно ли интерпретатор php считывает значение максимального времени выполнения. Если это не так, возможно, вы захотите попробовать метод ini set или методы htaccess для воспроизведения этого значения. Также убедитесь, что редактируемый вами php.ini правильный (путь к ini должен быть в дампе php info) — возможно, вы обнаружите, что у вас загружены 2 версии php, а также две ваши версии mysql.

Если это не решит или, по крайней мере, не укажет на проблему, отправьте ответ здесь и дайте нам знать.

Комментарии:

1. Итак, теперь у меня все было настроено заново. но как я могу загрузить содержимое index.ctp в view, если есть ошибка? внутри моего домашнего каталога cakephp-cakephp у меня есть приложение, cake, плагины, поставщик, .htacess и т.д. Но, насколько я понимаю эту платформу, localhost / cakephp-cakephp / personalblog / index или что-то в этом роде означает, что он автоматически извлекает данные из представления, даже если в домашнем каталоге не определено папки / каталога с именем personalblog. это верно?

2. о, и, кажется, я забыл сказать вам, что на моей странице приветствия cakephp localhost / cakephp-cakephp вообще отсутствует стиль CSS, что означает, что mod_rewrite в моей системе не работает. в дополнение к этому, в приветственном сообщении cake сообщил мне, что «конфигурация базы данных присутствует», что верно. НО нет сообщения о том, что «cake может подключиться к базе данных», как то, что я вижу в обычных случаях…

3. Вам следует протестировать новую установку — и убедитесь, что в вашей директиве VirtualHost DocumentRoot установлен в папке <app> / webroot. Обычно у меня нет папки приложения, поскольку я использую доменное имя в качестве имени папки с config / controllers / webroot / etc Непосредственно внутри этой папки. Похоже, у вас проблема с path / DocumentRoot / htaccess.