hetemlサーバーでMT5.2を使用しております。
本日(9/16)、PHP4 および PHP5.2 の提供が終了となり、PHP初期値のバージョンがPHP5.4へ変更されました。
この変更後、DynamicMTMLを使用していたサイトへアクセスすると、下記のエラーが発生する状況となっております。
Strict Standards: Only variables should be assigned by reference in /home/sites/heteml/users000/h/u/m/xxxxxx/web/mt/php/lib/mtdb.mysql.php on line 15
Strict Standards: Only variables should be assigned by reference in /home/sites/heteml/users000/h/u/m/xxxxxx/web/mt/php/mt.php on line 351
Deprecated: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead. in /home/sites/heteml/users000/h/u/m/xxxxxx/web/mt/php/lib/mtdb.mysql.php on line 43
Deprecated: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead. in /home/sites/heteml/users000/h/u/m/xxxxxx/web/mt/php/lib/mtdb.mysql.php on line 43
MT本体へのログインは行なえており、公開ディレクトリへアクセスすると、上記のエラーが発生しているという状況です。
復旧のために、解決方法などご存知でしたらご教授いただけますでしょうか。
よろしくお願いいたします。
【Deprecated:警告を非表示にする。(PHP5.3.x) - K氏のCentOSサーバ構築メモ】
http://d.hatena.ne.jp/Kshi/20100310/1268211701
Strict Standards警告とDeprecated警告を表示しないように、htaccessで設定できたと思います。
Deprecated警告は非推奨の関数があることを示しているため、近い将来のアップデートで動かなくなる可能性があるということかなと思います。
kei344さん、ご返信ありがとうございます。
このフォーラムへ投稿後、自分でも色々と調べてみて、htaccessでの設定や、php.iniのerror_reportingの変更なども試してみたのですが、エラーが出る状況です。
PHP5.3指定だと、エラーが発生しないということは確認できたのですが、PHP5.4だとエラーが発生するという状況です。
PHP5.3でエラーが発生せず、PHP5.4だとエラー発生するという状況の場合、その他にどのような点を確認してみるべきか、何かご存知のことがあればご教授お願いいたします。
PHP5.4からDeprecated警告が一般的な設定で出力される仕様になった為だと思われます。
また、htaccessなどでの指定が効力がないのは、DynamicMTMLのphp内に直接エラー出力方法の指定がなされているからかな、と想像します。(手元にコードがないため確認できず、申し訳ない)
以前別CMSをPHP5.4で運用した際に、デバッグ分岐のためにerror_reporting関数が使われていることがあり、そこを編集する必要があったことがありました。error_reporting関数をコードの中から探して書き換えればしばらくは問題がなくなります。ただ、PHP5.5やそれ以降のバージョンにあがる際に、当該関数がなくなる可能性は高いです。
【CakePHP2.xとPHP5.4でStrict Errorが出た場合の対処法】
http://blog.photosynthesic.jp/2013/03/cakephp2-x%E3%81%A8php5-4%E3%81%A7strict-error%E3%81%8C%E5%87%BA%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%B3%95/
kei344さん、ご返信ありがとうございます。
DynamicMTML.pack > php > mt.phpの75行目に
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
という記述があり、参考サイト(【CakePHP2.xとPHP5.4でStrict Errorが出た場合の対処法】)やその他のサイトなども参考に、
その部分を編集してみました。
(^ E_STRICTを追記するというような編集です)
結果としては、PHP5.3で下記のエラーが出るようになり、
Strict Standards: Only variables should be assigned by reference in /home/sites/heteml/users000/h/u/m/xxxxxx/web/mt/php/lib/mtdb.mysql.php on line 15
PHP5.4へ切り換えると
Deprecated: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead. in /home/sites/heteml/users000/h/u/m/xxxxxx/web/mt/php/lib/mtdb.mysql.php on line 43
というエラーが出ました。
(最初のエラーの Strict Standards: ・・・・・というエラーは出なくなった)
現状では、PHP5.3であれば元のファイルのままでエラーは生じていないので、しばらくはPHP5.3での運用を行なっていこうと思っております。
色々とご教授いただき、誠にありがとうございました。
また何かお気づきのこととかございましたらご教授ください。
宜しくお願い致します。
^ E_DEPRECATED
も追加すればDeprecatedエラーは出なくなると思います。
kei344さん、ご返信ありがとうございます。
返信が遅くなり申し訳ございません。
「^ E_DEPRECATED」を追加するという方法も試してみました。
エラーは出なくなったのですが、エラーが表示されなくなっただけで、画面がホワイトアウトしている状態になりました。
http://www.powercms.jp/blog/2011/12/faq.html
こちらのホワイトアウトしてしまう場合の原因と対策で掲載されている内容も確認してみましたが、別の対策をしなければならないのかなと思ってます。
また何かお気づきのこととかございましたらご教授ください。
宜しくお願い致します。