Назад | Перейти на главную страницу

Сайт Apache / PHP / Zend / PostGres перестал работать на выходных

Мы унаследовали веб-сайт, работающий на сервере Mac OSX (10.5.8). Он состоит из следующих компонентов:

В понедельник утром нам позвонили, что сайт не работает. Единственное, что отображается, - это фон сайта. Когда я смотрю в исходный код страницы, я вижу, что у меня есть начальный тег <body>, а затем документ останавливается.

На сайте нет логирования PHP. Я внес следующие изменения в файл php.ini:

Затем я перезапустил службу Apache. Вот ошибки, которые я начинаю видеть в журнале (на самом деле он связан с Apache error_log):

Неустранимая ошибка PHP: невозможно повторно объявить printMediaIcons () (ранее объявленный в /Library/WebServer/Documents/XXXXX/Website/module/Application/view/layout/header.phtml:20) в / Library / WebServer / Documents / XXXXX / Website / module / Application / view / layout / header.phtml в строке 39

Я не специалист по PHP, но я понимаю сообщение об ошибке. Я не понимаю, как это вообще могло сработать. Я хочу подчеркнуть, что мы не изменились что-нибудь на этом сайте.

Пытаясь продвинуться вперед, я отредактировал файл header.phtml и удалил функцию printMediaIcons и все ее вызовы. Затем я получаю еще одну ошибку, на этот раз из базы данных:

Вт, 3 ноября, 13:09:05 2015] [ошибка] [клиент 45.24.29.225] Неустранимая ошибка PHP: неперехваченное исключение «PDOException» с сообщением «SQLSTATE [22P02]: недопустимое текстовое представление: 7 ОШИБКА: недопустимый синтаксис ввода для логического типа: "" 'в /Library/WebServer/Documents/XXXXX/Website/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Connection.php:438\n Трассировка стека: \ n # 0 / Library / WebServer /Documents/XXXXX/Website/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Connection.php(438): PDO-> query ('SELECT id, time ...') \ n # 1 /Library/WebServer/Documents/XXXXX/Website/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Adapter.php(190): Zend \ Db \ Adapter \ Driver \ Pdo \ Connection-> выполнить ('SELECT id, time ... ') \ n # 2 /Library/WebServer/Documents/XXXXX/Website/module/Application/src/Application/Model/BaseModel.php(214): Zend \ Db \ Adapter \ Adapter-> query ('SELECT id, time ...', 'execute') \ n # 3 / Library / WebServer / Documents / XXXXX / Website / module / Application / src / Application / Model / Calendar Model.php (71): Application \ Model \ BaseModel-> executeQuery ('SELECT id, time ...') \ n # 4 / Library / WebSe in / Library / WebServer / Documents / XXXXX / Website / vendor / zendframework / zendframework / library / Zend / Db / Adapter / Driver / Pdo / Connection.php в строке 438

SQL, против которого он возражает, представляет собой простой оператор для чтения часов работы компании. Вот функция, которую он вызывает:

публичная функция getTodaysHours ($ timeTypeName) {$ timeTypeId = $ this-> getTimeTypeId ($ timeTypeName);

            $variableHours = $this->getVariableHours($timeTypeId);

            if($variableHours)
                   return $this->getDisplayForTimes($variableHours['time_from'],

$ variableHours ['время_до']);

            $sql = sprintf("SELECT id, time_from, time_to, day_of_week
                    FROM open_times
                    WHERE (day_of_week = '%s' OR day_of_week = 'All')
                      AND (is_dst = '%s' OR is_dst IS NULL)
                      AND time_type_id = '%s' ORDER BY day_of_week DESC;",
                      CalendarModel::getToday(), CalendarModel::getIsDst(), $timeTypeId);

            $results = $this->executeQuery($sql);
            $results = $results->toArray();
            $results = current($results);

            return $this->getDisplayForTimes($results['time_from'], $results['time_to']);
    }

На прошлой неделе сайт работал нормально. Я изучил файлы conf, ini, журналы ошибок, и это все, что я смог найти. Понятия не имею, что изменилось / сломалось на сервере.

У кого-нибудь есть идеи, как начать решать эту проблему?

Нашел! Проблема в getTodaysHours функция. Что-то в этом запросе в отношении is_dst вызывает ошибку. Я вернул фиктивное значение из этой функции и ПУФ сайт резервный.

Я до сих пор нет идея, как printMediaFunction работал раньше. Но я завернул его в проверку function_exists, и все в порядке.