使用新服务器的代码点火器白色页面


Code Igniter White Page using new server

我一直在我的Apache2服务器上运行一个CI应用程序,带有PHP版本"5.5.9-1ubuntu4.2"。一切运行良好。

现在,我安装了第二个OpenLiteSpeed Web服务器,它运行的是PHP版本"5.6.5"(我尝试过不同的版本)。该服务器与apache并行运行,但在不同的端口(8088)上运行。

每当我访问我的应用程序的index.php页面时,我都会看到一个白色屏幕。我尝试添加默认的welcome.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

一切都是白色的屏幕。如果我只是从URL中提取8088(因此使用端口80,我的apache服务器),那么一切都可以完美运行。

我已尝试将所有错误日志参数设置为最大值。我检查了服务器的error.log和access.log。我检查了/app/application/logs/文件夹中CI生成的日志。我已经将OpenLiteSpeed设置为调试模式并读取所有消息。我已经将php.ini中的"display_errors"都设置为"On",并用php.info进行了验证。我已经将我的应用程序的index.php设置为开发模式。

任何地方都没有错误。

我的任何php文件中都没有短标签。我试过在php.ini中打开和关闭短标签,但没有效果。

OpenLiteSpeed不使用任何.htaccess文件。我有一个重写规则,可以将非www重写为www.

我解决这个问题大约需要16小时20分钟,进度为0。

有什么建议吗?

编辑:尝试将apache的php.ini移到OpenLiteSpeed的php上。没什么区别。

编辑:将其缩小到自动加载"数据库"answers"会话"。删除这些自动加载可以修复问题,只是数据库功能不再工作。

EDIT:在mysql_driver.php中找到了数据库连接函数。当然,调用是@mysql_pconnect(…),@抑制错误,所以难怪我什么都没看到。在php.ini中的两个位置重新启用display_errors后,我现在得到了

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

php似乎不是用mysql支持编译的。让我们重新编译。

编辑:问题解决了。CI的自动加载加载了两个库"数据库"answers"会话",这两个库都导致了白屏。当我删除它们时,错误就会消失。我不得不用以下选项重新编译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个小时的试错的情况下弄清楚。超级的

找到了答案。出现白色屏幕的原因是自动加载"下载"answers"会话"库,这些库在后台静默失败。我必须使用正确的选项重新编译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隐藏了所有错误消息,这些错误消息会使这个问题的检测变得微不足道,并且花了大量时间才找到失败的@surpressed mysql_connection函数调用。