CodeIgniter 1.72 и PHP 5.3.29 совместимы?

Мы модернизируем нашу серверную инфраструктуру на Amazon, и я пытаюсь перенести сайт PHP на основе CodeIgniter (версия 1.7.2) на новый сервер с AmazonLinux в качестве ОС. Предыдущим сервером был Ubuntu, работающий на PHP 5.3.3-1ubuntu9.5 на apache2. Версия PHP на новом сервере AmazonLinux – 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 – если только мы не вынуждены из-за обновления.

Проблема оказалась проблемой доступа к базе данных. В частности, версия PHP на новом сервере не поддерживала устаревшие вызовы API-интерфейсов php-mysql (например, @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 (как показано в phpinfo при вызове с php-страницы на httpd / apached сервере) следующим образом:

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