画像掲示板の新着表示が壊れる

dtn.jpのトップページでは「画像掲示板の泉」新着投稿を表示するようしておりましたが、掲示板新着投稿データの取得がうまくできておらず、トップページのDIVレイアウトが壊れてしまっていることに気が付きました。

画像掲示板の板が真っ白に

急ぎ、女優画像掲示板を見てみると画面が真っ白になってしまっておりました。ログファイルを確認しても0Byteとなっており、ログが消失してしまったようです。

残念ながら直近のバックアップを取っておらず、取り急ぎ一カ月前のデータで復旧させました。投稿が消失してしまった方申し訳ありませんでした。

復旧させても再度真っ白に

データ復旧させたものの、不思議なことに見る間にまたログが欠損していき、一分も経つとまたログが0Byteになってしまいました。

しかも、再度復旧をさせてもまた同じような現象が発生しており、攻撃か!とも思いましたが、どうやら単にスパム連投をくらっていたようですが、投稿プログラムではログ更新時のファイルロックはかけていたので原因がよくわかりません。

PHPのfopen()でwモードの危険性

原因を調べてみたのですが、fopen($filename,”w”)のwモードだとデータが飛ぶ可能性が高いとの記載がphpspotさんで書かれているのを発見しました。

ここで注意点ですが、fopen($filename,”w”); のようにファイルを開くと、ロックをしたとしてもデータが飛ぶ可能性が高いです。
というのは “w” モードで書き込みを行おうとすると、最初にファイルサイズを0バイトにするため、flock でファイルロックを行っても、データが飛んでしまいます。

flock する場合は r+ の読み書きモードで開きましょう。

phpspot.net

fopen()のファイルアクセス形式のモード

mode説明
r読み込みのみでファイルを開く。ファイルポインタはファイルの先頭に置かれる。
r+読み込み/書き出し用にファイルを開く。 ファイルポインタはファイルの先頭に置かれる。
w書き出しのみでファイルを開く。ファイルポインタはファイルの先頭に置き、ファイルサイズをゼロにする。ファイルが存在しない場合には作成を試みる。
w+読み込み/書き出し用でファイルを開く。ファイルポインタはファイルの先頭に置き、ファイルサイズをゼロにする。ファイルが存在しない場合には作成を試みる。
a+読み込み/書き出し用でファイルを開く。ファイルポインタはファイルの終端に置き、ファイルが存在しない場合には、作成を試みる。書き込みは、常に追記となる。
fopen()のファイルオープン時の操作モード

fopen($filename,”r+”)に変更して解決

fopen()のモードをr+として、連投対策を付けたところ、無事に正常稼働をするようになりました。

dtn_top_imgbbs.png
dtn.jpトップページの画像掲示板新着投稿表示も復旧

おわりに

画像掲示板の泉はこちらからどうぞ。

img_bbs_img.png
猫の掲示板画像も復旧

PHPが学べるおすすめプログラミングスクール

この運営ブログをみて、もしdtn.jp管理人のようにサイトをゼロから作ってみたいという思いに駆られた方は、サイト開発やプログラミングをオンラインで受講できるプログラミングスクールの活用をしてみてはいかがでしょうか。サーバ/WordPress/HTML/CSS/JS/PHP/SQLなどの基本さえ分かれば、ゼロからサイト立ち上げもポンポンできるようになって、今なら仕事や転職にも役立つのでオススメです。

PHPも学べるオンラインスクール

  • CodeCampAWS Cloud9を使ったクラウド上のIDEが用意されているので、ネットにつながればスタート開始可能というゴージャスなスクールです。講師も選べて、Webマスターコースならプログラミング経験0でも一気にフロントエンドからバックエンドまでマスターできます。
  • ウェブカツJava言語やRuby言語なんぞ教えん!という、初心者にありがちな挫折ポイントがよく分かってるスクールです。フロントエンドエンジニアに必要なスキルセット&PHPがマスターできます。
  • フリークス HTML/CSSから始まり、MySQLやLinuxからPHPの変数や分岐やループ、クラスやPDOに最後はMVCまで教えてくれるので、そこまで分かればなんでもできそうです。メンターに質問もし放題がいいですね。
  • テックアカデミー法人のIT研修もやってる業界最大手・受講者数No.1のスクールです。メンターとの定期オンライン面談やチャットサポートなどもあり、大手ならではインフラ環境がウリです。PHPと合わせてjQueryもマスターできる、PHP/Laravelとフロントエンドコースがおすすめです。

オンラインスクールのデメリット

孤独になりがちなサイト制作も、優しいメンターがそばにいてくれれば凄い楽しそうですが、もちろんデメリットもあります。お金がかかるという点です。ひたすらググって、本を読んでよりは確実にコストがかかってしまいます。とはいえ、多少の余裕があるなら、こんなご時世なので時間と労力を買った方が良いと思います。