Ich habe eine Route
1 |
$route['(:any)/migrate'] = 'cli/migrate'; |
und einen zugehörigen Controller
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
class Migrate extends CI_Controller { public function __construct() { parent::__construct(); if (!$this->input->is_cli_request()) { show_404(); } $this->load->library('migration'); } public function index() { if ($this->migration->latest()) { echo 'DB on "' . ENVIRONMENT . '" successfully migrated!' . PHP_EOL; } else { echo 'Error: ' . $this->migration->error_string() . PHP_EOL; } } } |
Das hat die ganze Zeit funktioniert – jetzt bekomme ich
Message: Undefined index: REMOTE_ADDR
So weit, so klar: Eine Remote-IP habe ich nur, wenn der Aufruf auch von Remote kommt. Jetzt könnte man auf PHP schimpfen, warum der Index nicht trotzdem da ist, bsplw. mit 0.0.0.0, dem leeren String oder meinetwegen NULL gefüllt. Aber viel interessanter finde ich die Frage, warum das plötzlich nicht mehr geht. Wenn man sich den Controller oben ansieht, dann wird das erst mal nicht klar: Die IP wird nicht direkt abgefragt – klar, sonst hätte es auch nicht so lange funktioniert. Es wird aber auch keine Custom Klasse verwendet. Nicht mal indirekt, wie sich herausstellt, denn:
Die Session-Library ist der Übeltäter, die hatte ich vor Kurzem in die Autoload getan. Nun möchte ich an der Framework-Klasse CI_Session nicht herumdoktern, deshalb sieht mein aktueller Hack in der autoload.php so aus:
1 2 3 4 |
if (isset($_SERVER['REMOTE_ADDR'])) { $autoload['libraries'] = array('session'); } |
Irgendwelche besseren Vorschläge?