ここでは PHP7 周りでおっとっと、、という事例について備忘録ついでに紹介していきます。今回は、「mysql_real_escape_string」です。
mysql_real_escape_string は PHP7から廃止された!
のでこの関数をつかっている場合にはエラーが出ます。
この関数は、MySQLデータベースにSQLクエリを渡すときに特殊文字をエスケープする関数です。esc_html などと同じような感じですね!
ログには
- 2016/04/27 11:33:38 [error] 23763#0: *1 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Call to undefined function mysql_real_escape_string() in 使っているPHP(パス含む)
という感じで出ます。
mysqli_real_escape_string に変更せよ!
ということで解決できます。
ただし、第1引数にMySQL DBへの接続設定が必要です。そうじゃなくて、SQLのエスケープだけがしたい!!ってことなら、 esc_sql 関数を使いましょう(2016年5月4日追記)。
ただし、第1引数にMySQL DBへの接続設定が必要です。そうじゃなくて、SQLのエスケープだけがしたい!!ってことなら、 esc_sql 関数を使いましょう(2016年5月4日追記)。
この関数は、PHP5 以上なら実装されてます。
今回引っかかったのは、<旧>WordPress Download Monitor
※ WordPress Download Monitor はいつの間にか、他のプラグインに置き換わっていました T_T; 前は、 Mike Jolley さんが作成、現在のものは Never5さんですね.. ぐむむ
「アップロード & 保存」というボタンを押したら、nginx君がエラーを吐きました。
ログを見て調べていくと
- admin/addnew.php
- admin/admin.php
- uploader.php
の三箇所に、2つずつ mysql_real_escape_string関数が使われていました。これを変更することで暫定回避。
もちろん抜本解決には、プラグイン側で直してもらわないといけません。
今回はプラグイン自体は動作していて、しかし実際にファイルをアップロードする際にエラーになるという即時対応が必要というわけじゃないので、とりあえずフォーラムにて
- Cannot work the Download Monitor plugin on PHP7(WordPress.org)
にて指摘しておきました。
あと
set_magic_quotes_runtime も廃止されてる!
これは
- download.php
set_magic_quotes_runtime(0);
という形で使われていました。これはコメント(削除)で対処
ふ〜
2016年4月27日 @kimipooh
2016年5月4日 追記
2016年5月4日 追記
0 件のコメント:
コメントを投稿