Codeigniter версии 3.0.3 и PHP версии 7.2.
Я установил Ubuntu 18.04 Server OS с mysql, php и apache2. Когда я запускаю проект codeigniter в localhost, он работает нормально, но не на сервере. Он загружает страницу входа в систему, но не перенаправляет на данную страницу, он просто обновляет страницу входа в систему, когда предоставляются действительные учетные данные. Помогите решить эту проблему, если кто-то знает проблему.
Ошибка при загрузке страницы индекса на сервер
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Warning</p>
<p>Message: sizeof(): Parameter must be an array or an object that implements Countable</p>
<p>Filename: controllers/Login.php</p>
<p>Line Number: 57</p>
<p>Backtrace:</p>
<p style="margin-left:10px">
File: /var/www/html/sample/application/controllers/Login.php<br />
Line: 57<br />
Function: sizeof </p>
<p style="margin-left:10px">
File: /var/www/html/sample/index.php<br />
Line: 292<br />
Function: require_once </p>
</div>
{"status":true,"message":""}"
Эта ошибка не возникает в localhost.
В моем случае я запускаю команду в терминале
sudo a2enmod переписать
После этого я перезапустил Apache
systemctl перезапустить apache2
В обоих случаях вам понадобится пароль администратора
Это предупреждение, которое также имеет значение для вашего локального сервера, но, возможно, вы отключили предупреждение или используете другую версию PHP. Поскольку вы анализируете json, он не сможет его проанализировать, потому что ответ смешан с предупреждением, поэтому он не в чистом формате json.
sizeof
принимает массив или объект, который реализует Countable. Вы можете использовать эту функцию после проверки, является ли переменная массивом или нет, используя это:
is_array($dataVariable)?sizeof($dataVariable):0
это вернет ноль, если переменная не является массивом. Вы также можете отключить предупреждение на производстве.