経緯
phpで作ったログインフォームが、昨日突然ログインできなくなった。
原因が分からず色々試しているうちにサーバをrebootしたら復旧した。
解決かと思ったら、今朝またログインできなくなっていた。
調べる
login.php
<?php
session_start();
if($_POST["id"] == "admin" && $_POST["password"] == "ABC123"){
$_SESSION['login'] = true;
$_SESSION['id'] = $_POST["id"];
header('Location: index.php');
exit;
}
echo '<form action="login.php" method="POST">';
echo 'id:<input type="text" name="id">';
echo 'password:<input type="password" name="password">';
echo '<input type="submit" value="ログイン">';
echo '</form>';
index.php
<?php
$session_return = session_start();
if(!$session_return){
echo "セッションエラー";
}
if(!$_SESSION['login']){
var_dump($_SESSION);
// header('Location: login.php');
exit;
}
echo "ログイン成功";
array(0) {}
どうやら$_SESSIONに書き込みができなくなっているようだ。
しばらくしてlogin.phpがエラーを吐いている事に気がついた。
Warning: Unknown: write failed: No space left on device (28) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0
「No space left on device」って・・・あ。
# df
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 249360 0 249360 0% /dev/shm
/dev/vda4 15948532 15250520 0 100% /
/dev/vda2 487652 130694 327262 29% /boot
tmpfs 49872 0 49872 0% /run/user/0
・・・ディスク埋まってる。
# du -k / | sort -rn | head -10
15374837 /
13146344 /var
12804060 /var/log
12739304 /var/log/httpd
2042276 /usr
828688 /usr/lib
491660 /usr/lib/firmware
447940 /usr/share
262768 /usr/bin
220276 /var/lib
そういえばapacheのログの設定してなかったな。
# ls -l /var/log/httpd/
total 12739300
-rw-r--r-- 1 root root 2170880 May 7 12:55 access_log
-rw-r--r-- 1 root root 13038845952 May 7 12:55 error_log
Oh!
解決
# rm /var/log/httpd/error_log
# vi /etc/httpd/conf/httpd.conf
ErrorLog "/dev/null"
LogLevel alert
# service httpd restart
これでよし。
ログイン成功
めでたしめでたし😇