CodeIgniter 1.72和PHP 5.3.29兼容吗?

时间:2015-04-25 19:03:07

标签: php apache codeigniter ubuntu

我们正在升级我们在亚马逊上的服务器基础架构,并且我正在尝试将基于CodeIgniter(版本1.7.2)的PHP站点迁移到具有AmazonLinux作为操作系统的新服务器。以前的服务器是Ubuntu,在apache2上运行PHP 5.3.3-1ubuntu9.5。新的AmazonLinux服务器上的PHP版本是5.3.29,在httpd上运行。

当我尝试访问新服务器中的URL时,代码当前在此行的system/core/CodeIgniter.php处停止:

$CI = new $class();

我无法在应用程序的虚拟主机中指定的httpd错误日志中看到任何相关的错误消息,也无法在默认的httpd错误日志中看到。使用lynx命令行客户端访问URL只显示内部服务器500错误,而通过常规浏览器访问只显示空白页面。

有什么想法吗?我知道Code Igniter版本已经很老了,大约在2009年。但它与我们在新服务器上运行的PHP 5.3兼容。这是遗留代码,并且会在某些时候消失,所以我们没有兴趣升级PHP或CI级别 - 除非我们被迫升级。

1 个答案:

答案 0 :(得分:0)

问题原来是数据库访问问题。具体来说,新服务器上的PHP版本不支持对php-mysql API的弃用调用(例如@mysql_pconnect或@mysql_connect)

解决方案是

1)下载支持旧版调用的mysql库。对于AmazonLinux,这可以通过以下方式完成:

sudo yum install php-mysql

2)找到下载库的位置,例如

find / -name mysql.so

这可能也已在安装中显示,但这是一种随时查找它的方法。 YMMV,但就我而言,库名是:

/usr/lib64/php-zts/modules/mysql.so

3)更改php.ini(如从httpd / apached服务器上的php页面调用时的phpinfo中所示),如下所示:

a)更改“extension_dir”以显示mysql.so的安装位置:

extension_dir = "/usr/lib64/php-zts/modules" 

b)然后添加以下行:

extension=mysqli.so
extension=mysql.so
extension=pdo_mysql.so

重新启动apache,你应该很高兴。

注意:不支持特定的旧版调用,这是我正在使用的CodeIgnitor版本的一部分,是:

            return @mysql_pconnect($this->hostname, $this->username, $this- 

php错误日志显示此错误:

 PHP Fatal error:  Call to undefined function mysql_connect() in xxx.php on line xx
相关问题