CodeIgniter 3.1 unter PHP 8.x installieren: Wartungsanleitung

Eine bestehende CodeIgniter-3-Anwendung mit gepflegtem Fork, Grundkonfiguration und Prüfungen unter PHP 8.x betreiben.

CodeIgniter 3.1 unter PHP 8.x installieren: Wartungsanleitung

CodeIgniter 3 ist für bestehende Anwendungen weiterhin relevant. Die ursprüngliche Version 3.1.13 stammt jedoch aus der Zeit vor neueren PHP-Versionen. Unter PHP 8.2 und später können veraltete Aufrufe und Typfehler auftreten. Planen Sie eine getestete Migration, statt Framework-Dateien wahllos zu ändern.

Voraussetzungen

Verwenden Sie eine vom gewählten Fork unterstützte PHP-Version, Apache oder Nginx sowie Datenbank und PHP-Erweiterungen Ihrer Anwendung. Für MySQL ist mysqli erforderlich. Prüfen Sie PHP-Version und Erweiterungen für Webserver und CLI getrennt; sie können voneinander abweichen.

php -v
php -m

Quellcode beziehen

Eine historische Originalkopie 3.1.13 erhalten Sie als Archiv des Tags. Für gepflegte Anwendungen auf aktuellen PHP-Versionen prüfen Sie den CodeIgniter-3-Fork von pocketarc und seine Releases. Er soll das Verhalten von CI3 erhalten und neue PHP-Versionen unterstützen. Lesen Sie Änderungen und Lizenz und testen Sie den eigenen Code.

wget https://github.com/bcit-ci/CodeIgniter/archive/refs/tags/3.1.13.zip
unzip 3.1.13.zip
mv CodeIgniter-3.1.13 my-project
cd my-project

Anwendung konfigurieren

Setzen Sie base_url in application/config/config.php und die Datenbankdaten in application/config/database.php. Bewahren Sie Geheimnisse außerhalb des Repositories auf. Nutzen Sie eine passende Produktionskonfiguration und beschränkte Datenbankrechte.

$config['base_url'] = 'https://example.com/';
$db['default'] = array(
    'hostname' => 'localhost',
    'username' => 'db_user',
    'password' => 'YOUR_SECRET',
    'database' => 'db_name',
    'dbdriver' => 'mysqli'
);

Kompatibilität mit PHP 8

Warnungen zu null-Werten oder nicht zählbaren Typen müssen an der jeweiligen Aufrufstelle untersucht werden. Ein pauschales Ersetzen von strlen($str) durch strlen((string)$str) oder count($data) durch count((array)$data) kann das Verhalten verändern und Fehler verdecken. Bevorzugen Sie einen getesteten Wartungs-Fork und korrigieren Sie Anwendungscode sowie Bibliotheken gezielt.

Dateiberechtigungen

Nur application/cache und application/logs müssen bei entsprechender Nutzung beschreibbar sein. Geben Sie dem Webserver dort Zugriff; vermeiden Sie Schreibrechte für den gesamten Projektbaum oder pauschal großzügige rekursive Rechte.

sudo chown -R www-data:www-data application/cache application/logs
sudo chmod -R u+rwX,g+rX application/cache application/logs

Nginx-Beispiel

Liegt der Document Root im Projektverzeichnis, sperren Sie den direkten Zugriff auf application, system, versteckte Dateien und beliebige PHP-Skripte. Leiten Sie Anfragen an index.php weiter und passen Sie den PHP-FPM-Socket an. Ergänzen Sie HTTPS, weitere Härtung und Protokolle für Produktion.

server {
    listen 80;
    server_name example.com;
    root /var/www/my-project;
    index index.php;
    location / { try_files $uri $uri/ /index.php?$query_string; }
    location ~ ^/(application|system)/ { deny all; }
    location ~ /\. { deny all; }
    location ~ \.php$ { return 404; }
    location = /index.php {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }
}

Prüfen und bereitstellen

Testen Sie Routen, Datenbankzugriffe und Protokolle unter der vorgesehenen PHP-Version. Verwenden Sie den Entwicklungsmodus nur lokal; in Produktion dürfen Fehler nicht öffentlich angezeigt werden. Sichern Sie Anwendung und Datenbank vor einem Austausch der Framework-Dateien.

define('ENVIRONMENT', 'production');

Weitere Informationen

Wartungs-Fork: https://github.com/pocketarc/codeigniter ; Originalanleitung zu 3.1.13: https://codeigniter.com/userguide3/installation/index.html. Für neue Anwendungen kommt CodeIgniter 4 in Betracht.

Teilen

Was ist Ihre Reaktion?

Gefällt mir Gefällt mir 0
Gefällt mir nicht Gefällt mir nicht 0
Liebe Liebe 0
Lustig Lustig 0
Wütend Wütend 0
Traurig Traurig 0
Wow Wow 0