PHP Strict Standardsエラーの解決方法

このQ&Aのポイント
  • PHP Strict Standardsエラーが発生する場合、以下の解決方法を試してみてください。
  • まず、php.iniファイル内のerror_reportingの設定を変更します。
  • error_reporting = E_ALL | ~E_STRICTと設定してみてください。もし効果がなければ、lamppを再起動してみてください。
回答を見る
  • ベストアンサー

PHP Strict Standards

本に載っている、PEARのCalendar.phpを使用したプログラムを実行すると Strict Standards: Non-static method Calendar_Engine_Factory::getEngine() should not be called statically, assuming $this from incompatible context in /usr/share/php/Calendar/Calendar.php on line 210 というエラーが出ます。 ネットで検索すると、php.iniの中の error_reporting = E_ALL | E_STRICT を error_reporting = E_ALL | ~E_STRICT に変えるだけでエラーが出なくなるみたいでした。 http://www.xoops.org/modules/newbb/viewtopic.php?post_id=330699 私のは error_reporting = E_ALL & ~E_DEPRECATED となっていたので、 error_reporting = E_ALL | ~E_STRICT に変えてlamppを再起動しましたが、まったく同じエラーが出ます。 error_reporting = E_ALL & ~E_STRICT にしても同じです。 解決方法を教えてください、 よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • tomaju
  • ベストアンサー率76% (84/110)
回答No.1

> lamppを再起動しましたが ひょっとすると XAMPP をお使いでしょうか? となると、/opt/lampp/etc/php.ini はありませんか? そちらを編集して、lampp を再起動してみてください。 http://www.apachefriends.org/jp/xampp-linux.html#2569 あるいはPHPスクリプトで設定することもできます。 例: ini_set('error_reporting', E_ALL | ~E_STRICT); error_reporting(E_ALL | ~E_STRICT); 余談: 前回のご質問で /etc/php5/cli/php.ini を変更するも 変化なしでしたが、この php.ini は XAMPPとは別個に インストールされているPHP の設定ファイルかもしれません。 さらに cli ということはコマンドライン用とWebサーバー用で 設定が切り離されているようなので、やはりブラウザで アクセスする方には反映されない予感がします。 PEARがどこにインストールされるか、php.ini がどこにあるか といったことは、OS環境や、インストールの仕方により バリエーションがあります。 http://phpcommons.sourceforge.jp/wiki/index.php?PHP%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB 管理や引継ぎが悪いと、ひとつサーバに何種類もPHPが インストールされていてどれが動作しているのか 担当者がいまいち把握できてないなんてことも ままあったりもしますorz

futureworld
質問者

お礼

解決ですっ!!! まったく仰る通り、私はLinux版のxamppを使っており、/opt/lampp/etc/php.ini に上記の修正を加えて保存しxamppを再起動してから実行すると、エラーが消えました! インストールされる場所にもいろいろなバリエーションがあるんですね。 因みに私のOSはWindows VISTA上のVMWareにUbuntuをインストールしています(ややこしいですね)。 私のWindows VISTAにはいろんなバージョンのPHPをあちらこちらにインストールしてしまったので、自分でもどれを使っているのかよく分かりません。(笑) 本当に助かりました。これでまた勉強に戻れます。 ありがとうございました!

関連するQ&A

  • Strict Standardsエラーを消したい

    PHP初心者です。 MAMPを使用して、macにてローカル環境でwordpressサイトを制作中です。 MAMPのPHPは5.4.10と設定しています。 wordpressを最新版に更新して、ダッシュボードにログインすると Strict Standards: Only variables should be passed by reference in /ファイル名~ など、Strict Standardsから始まる警告文がたくさん出ました。 /Applications/MAMP/conf/php5.4.10/php.ini の該当箇所と思われる部分を ;error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED ; ; - Show only errors ; ;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR ; ; - Show all errors except for notices ; ;error_reporting = E_ALL | E_STRICT error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED ~略~ display_errors = Off 等と記述していますが、ダッシュボードに変化はありません。 /Applications/MAMP/bin/php/php5.4.10/conf/php.ini でも試してみましたがダメでした。 変更後は、Apacheの再起動もしています。 PHPの仕組みが理解できていないので、根本的なところが抜けているのかもしれません。 恐縮ですが、教えていただけると幸いです。

    • 締切済み
    • PHP
  • XAMPP on LINUX (MDB2の利用について)

    こんにちは。LINUX上で動かすXAMPPについて質問があります。 これまで、あるアプリの開発をWindows上のXAMPPで行ってきました。ある程度形になったので、実環境を踏まえ。LINUX上で開発することになりました。OSはCentOS5です。 LINUX版のXAMPPをインストールしたのですが、PHPのPearにMDB2が入っていなかったので、Pear installでMDB2をインストールしました。 Windowsで作ったページをLINUX上に移動し、requireパスを変更してから 動作確認を行ったところ、以下のようなエラーがずらずらと出てきました。Windows版では、正常に稼動していました。 なにか問題があるのでしょうか?どなたか解法をご存知の方、ご教授お願いします。 ---------------------- Deprecated: Assigning the return value of new by reference is deprecated in /opt/lampp/lib/php/MDB2.php on line 390 Strict Standards: Redefining already defined constructor for class MDB2_Driver_Common in /opt/lampp/lib/php/MDB2.php on line 1310 Deprecated: Assigning the return value of new by reference is deprecated in /opt/lampp/lib/php/MDB2.php on line 1885 Deprecated: Assigning the return value of new by reference is deprecated in /opt/lampp/lib/php/MDB2.php on line 2572 Deprecated: Assigning the return value of new by reference is deprecated in /opt/lampp/lib/php/MDB2.php on line 2595 Deprecated: Assigning the return value of new by reference is deprecated in /opt/lampp/lib/php/MDB2.php on line 2940 Strict Standards: Declaration of MDB2_Driver_Common::raiseError() should be compatible with that of PEAR::raiseError() in /opt/lampp/lib/php/MDB2.php on line 3317 Strict Standards: Redefining already defined constructor for class MDB2_Result_Common in /opt/lampp/lib/php/MDB2.php on line 3377 Strict Standards: Redefining already defined constructor for class MDB2_Row in /opt/lampp/lib/php/MDB2.php on line 3850 以下略

    • ベストアンサー
    • PHP
  • PHP5で、 以下は変数が間違っているのですが、ワーニングが出ませんで

    PHP5で、 以下は変数が間違っているのですが、ワーニングが出ませんでした。 error_reporting(E_ALL | E_STRICT); $a = 10; print $b; error_reportingで検知できないのは、何か私が勘違いしているのでしょうか? 変数の誤使用(未使用)を防ぐ方法が知りたいです。

    • ベストアンサー
    • PHP
  • PHPのエラーがでない

    お世話になります よろしくお願いします 使えるネット様のサーバーを使用しています。 PHPでデバッグ用にエラーの表示をしたいのですが どうすればいいか分からず困っています [php.ini] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Error handling and logging ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; error_reporting = E_ALL & ~E_NOTICE display_errors = On display_startup_errors = Off log_errors = Off log_errors_max_len = 1024 ignore_repeated_errors = Off ignore_repeated_source = Off report_memleaks = On track_errors = Off html_errors = On ソースに error_reporting(E_ALL|E_STRICT); を入れてもだめでした 怪しいところといえば phpinfoで Configurationの箇所がLocal ValueとMaster Valueに分かれているのですが Master Valueのほうがdisplay_errors On Local Valueのほうがdisplay_errors Off になっています。 原因はこれじゃないかなと思っているのですが どうすればいいか分からず困っています 以上よろしくお願いします

  • Strict Standards: date()   mkdate()

    PHP5を使っています。 error_reporting(E_STRICT); をつけると、2つのエラー?が画面に表示されます。 これが表示されるということは、何か原因があると思います。 phpのコードで根本から直したいので、対処方法をご存知の方、教えてください。 error_reportingをコメントとかは、したくないです。 (1) Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' (2) Strict Standards: mktime() [function.mktime]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST'

    • ベストアンサー
    • PHP
  • PHPのエラー表示について

    PHPを勉強し始めたばかりの初心者です。 開発環境はDreamweaverとwebmatrixです。 出力結果をブラウザで確認しているのですが、 エラーの詳細が表示されず HTTPステータスコード(404 Not Foundなど)しか返ってきません。 php.iniは、ネットで調べて以下のように設定しました。 display_errors = On error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT でも、表示が変わりません。 phpinfo();の結果表示内のLoaded Configuration Fileの項目は C:\xampp\php\php.iniですので、それを編集しています。 更新されてないのかな?と思ってPCを再起動しましたが変わりませんでした。 ご存知の方がいらっしゃいましたら、ご教示ください。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • どうしても、ウェブ上でPHPエラーメッセージがでない

    error_reporting = E_ALL display_errors = On にしてるのに、わざとphpの構文エラーをだしても、ナニもブラウザにエラーが表示されません。 なお、phpとincファイルを「error」で全検索しても、特にナニも検索にひっかかりません。 なぜでしょうか? おわかりのかたいらっしゃいましたら、教えていただければ幸いです。

    • ベストアンサー
    • PHP
  • PHPのエラー表示

    よろしくお願いします。 使えるねっとの専用サーバーを使っています。 そこで質問ですが、Tera Termでサーバーに接続して etc/php.iniファイルの設定をいじって PHPのエラーが出るようにしたいのですが error_reporting = E_ALL & ~E_NOTICE と display_errors=Onを設定して Apacheの再起動をしたのですが エラーが表示されず、真っ白の画面が表示されるままなのですが どうしたらエラーの表示ができるのでしょうか? 以上よろしくお願いします。

    • 締切済み
    • PHP
  • PHP PEARのWeeks.phpの場所

    Fatal error: require_once() [function.require]: Failed opening required 'Calendar/Month/Weeks.php' (include_path='.:/php/includes:/usr/share/php/smarty') in /opt/lampp/htdocs/samples/chapter6/6-4/calendar_pear.php on line 8 というエラーが出ているので調べています。 PEARのCalendar/Month/Weeks.phpは、デフォルトではどこにインストールされるものなんでしょうか? PEARはインストールしてあって、pear install Calendar-0.5.5もやっていて、 pear install Calendar と打つと pear/Calendar is already installed and is the same as the released version 0.5.5 install failed と、既にインストールされてます、と出ます。 /usr/share/php/PEARが存在することは確認したのですが、find . "Weeks.php"と打っても 「find: `Weeks.php': そのようなファイルやディレクトリはありません」と出ます。 調べる方法があれば教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP 画面が真っ白

    WAMP初級者です。 いままでPEAR:DBを使って書いていたコードを、プリペアドステートメントやらPDOやらにコードを変更していますが、画面が真っ白になるケースがでてきました。 今までは素直にエラーを表示してくれていたので、すぐに対処ができたのですが、コードを何度見直しても間違いがみあたらず、エラーも何も表示してくれないのでどこでエラーがでているかわかりません。 php.iniで error_reporting = E_ALL がコメント解除されている display_errors = On になっていることを確認していますが、それでも何も表示してくれません。 おそらくどこかしらミスがあり、真っ白なのだと思いますが、、どのように探るべきでしょうか? 初歩的な質問ですみませんが、どなたお助けください。 環境はApache/2.2.4 (Win32) PHP/5.4.22です

    • ベストアンサー
    • PHP

専門家に質問してみよう