Code Igniter White Page с использованием нового сервера

0

Я запускаю приложение CI на моем сервере Apache2 с версией PHP 5.5.9-1ubuntu4.2. Все работает нормально.

Теперь я установил второй веб-сервер OpenLiteSpeed, на котором установлена версия PHP "5.6.5" (я пробовал разные версии). Этот сервер работает параллельно с apache, но на другом порту (8088).

Всякий раз, когда я посещаю страницу index.php своего приложения, я получаю белый экран. Я попытался добавить контроллер приветствия по умолчанию и посмотреть и попытался запустить его с URL-адресом:

http://www.example.com:8088/app/index.php/welcome/
http://www.example.com:8088/app/index.php/welcome/index
http://www.example.com:8088/app/index.php
http://www.example.com:8088/app/index.php/app/ (my app controller)

...etc

Все это белый экран. Если я просто вытащил 8088 из URL (поэтому, используя порт 80, мой сервер Apache), все работает отлично.

Я попытался установить все параметры журнала ошибок на их максимальные значения. Я проверил свой сервер error.log и access.log. Я проверил созданные CI журналы в папке /app/application/logs/. Я установил OpenLiteSpeed в режим отладки и прочитал все сообщения. Я установил оба "display_errors" в php.ini в "Вкл." И проверил его с помощью php.info. Я установил приложение index.php в режим разработки.

Ошибок нет.

У меня нет коротких тегов в любом из моих php файлов. Я попытался включить и выключить короткие теги внутри моего php.ini без эффекта.

OpenLiteSpeed не использует файлы.htaccess. У меня есть RewriteRule, чтобы переписать не-www на www.

У меня около 16 часов и 20 минут, чтобы решить эту проблему, с 0 шагом.

Какие-либо предложения?

EDIT: Попробовал переместить apache php.ini на OpenLiteSpeed php. Не имело никакого значения.

EDIT: сузили его до автоматической загрузки "базы данных" и "сеансов". Удаление этих автозагрузки устраняет проблему, кроме того, что функции базы данных больше не работают.

EDIT: Найдена функция подключения к базе данных в mysql_driver.php. Конечно, вызов @mysql_pconnect (...), @подавляет ошибки, поэтому неудивительно, что я ничего не видел. После повторного включения display_errors в BOTH местах в php.ini, теперь я получаю

Fatal error: Call to undefined function mysql_pconnect() in /var/www/html/CodeIgniter/database/drivers/mysql/mysql_driver.php on line 94

Похоже, что php не был скомпилирован с поддержкой mysql. Давайте перекомпилируем.

EDIT: проблема решена. Автозагрузка CI загружала базу данных двух библиотек и сеанс, оба из которых вызывали белый экран. Когда я их удалю, ошибка исчезнет. Мне пришлось перекомпилировать PHP со следующими параметрами:

--enable-opcache --with-mysql --with-mysqli --with-zlib --with-gd --enable-shmop --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbstring --with-iconv --with-libdir=lib64 --with-litespeed --with-curl --enable-zip --with-bz2 --with-jpeg-dir=lib64 --enable-bcmath --enable-calendar --enable-ftp --enable-gd-native-ttf --enable-exif --with-openssl --with-xmlrpc --with-freetype-dir=lib64 --with-png-dir=lib64 --enable-inline-optimization --enable-xml 

Поэтому основной причиной была неправильная настройка конфигурации PHP. Но настоящая проблема заключается в том, что CI является ужасной структурой, которая не может отображать информацию об ошибках, чтобы помочь вам выявить проблемы, когда они происходят. Информация есть все, PHP говорит вам, что неправильно, и CI делает все возможное, чтобы скрыть его, чтобы вы никогда не узнали без ~ 20 часов проб и ошибок. Супер.

  • 0
    Вы пытались изменить base_url?
  • 0
    Пожалуйста, опубликуйте свое решение в качестве ответа и примите его. На форуме похоже, что ваш вопрос все еще ждет ответа.
Теги:
codeigniter
codeigniter-2

1 ответ

1
Лучший ответ

Выяснил ответ. Белый экран был причиной из-за автоматической загрузки библиотек "загрузки" и "сеанса", которые в фоновом режиме терпели неудачу. Мне пришлось перекомпилировать PHP с правильными параметрами, чтобы заставить его работать.

--enable-opcache --with-mysql --with-mysqli --with-zlib --with-gd --enable-shmop --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbstring --with-iconv --with-libdir=lib64 --with-litespeed --with-curl --enable-zip --with-bz2 --with-jpeg-dir=lib64 --enable-bcmath --enable-calendar --enable-ftp --enable-gd-native-ttf --enable-exif --with-openssl --with-xmlrpc --with-freetype-dir=lib64 --with-png-dir=lib64 --enable-inline-optimization --enable-xml 

Реальная проблема заключается в том, что CI скрывал все сообщения об ошибках, которые сделали бы эту проблему тривиальной для обнаружения, и потребовалось огромное количество времени только для того, чтобы найти вызванный функцией @suppressed mysql_connection вызов, который терпел неудачу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню