【发布时间】:2015-02-21 02:45:07
【问题描述】:
我一直在使用 PHP 版本“5.5.9-1ubuntu4.2”的 Apache2 服务器上运行 CI 应用程序。一切正常。
现在,我安装了第二个 OpenLiteSpeed 网络服务器,它运行 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
一切都是白屏。如果我只是将 8088 从 URL 中拉出(因此使用端口 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 文件。我有一个 RewriteRule 将非 www 重写为 www。
我用了大约 16 小时 20 分钟来解决这个问题,进度为 0。
有什么建议吗?
编辑:尝试将 apache 的 php.ini 移至 OpenLiteSpeed 的 php。没有任何区别。
编辑:将其缩小到“数据库”和“会话”的自动加载。删除这些自动加载可以解决问题,但数据库功能不再起作用。
编辑:在 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 的自动加载正在加载两个库“数据库”和“会话”,这两个库都导致了白屏。当我删除它们时,错误就会消失。我不得不使用以下选项重新编译 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 小时的反复试验,你将永远无法弄清楚。超级棒。
【问题讨论】:
-
你试过修改base_url吗?
-
请将您的解决方案作为答案发布并接受。在论坛中,您的问题似乎仍在等待答案。
标签: php codeigniter codeigniter-2