タグ

ブックマーク / qiita.com/ngyuki (3)

  • PHP のエラーログを root が作成してしまってアプリから書けなくなる問題 - Qiita

    なにかの拍子で root で php を実行してエラーが出力されると /var/log/php/php.log が root 所有の 0644 とかで作成されてしまい、アプリケーションの実行ユーザーからエラーログが書けなくなってしまいます。 この問題を解決するためのいくつかの案。 案:logrotate で 0666 でファイルを作成する logrotate で次のように create 0666 root root を指定します。 /var/log/php/*.log { missingok notifempty create 0666 root root } こうしておけばローテーション時に 0666 でログファイルができるので、root でログに書き込んでしまっても Web アプリからのエラーログが書き込めなくなったりはしません。 と思ったら次のような問題があるらしいです。 logro

    PHP のエラーログを root が作成してしまってアプリから書けなくなる問題 - Qiita
    n314
    n314 2019/08/21
    PHPをrootで実行するのが間違っているのでは…。ログに限らず、キャッシュ用のファイルとかもrootで書いちゃうよね。キャッシュ用のライブラリが知らないところでファイルを使っていることも結構ありそうな。
  • composer で入れた phpunit で少し楽をする - Qiita

    最近は phpunit も composer で入れるのが流行っているらしいです。 Before composer で phpunit を入れると(標準では)vendor/bin/phpunit に置かれるので次のように実行します。 テストが置いているディレクトリは phpunit.xml.dist や phpunit.xml に記述しているのでこれだけで OK です。 最近はプロジェクトルートに置くファイルが多くなってきたので phpunit.xml はプロジェクト直下ではなく tests/ ディレクトリに置くのがマイブームです。 なので次のようになります。

    composer で入れた phpunit で少し楽をする - Qiita
    n314
    n314 2019/04/28
    なるほど。テストのディレクトリを分けた場合はその中にxmlも入れたらいいのか。
  • PHP で例外を投げるメソッドじゃなく例外を作るメソッドにするただひとつの理由 - Qiita

    例外の作成にめんどくさい手続きが必要なとき。例えば、HTTP のレスポンスオブジェクトを元に例外を作成するときとか。 <?php $message = sprintf( "HTTP/%s %s %s", $response->getVersion(), $response->getCode(), $response->getMessage() ); throw new HttpException($message, $response->getCode()); そういうときはそれようのメソッドを作ると便利です。 このとき、例外を作成して投げるメソッド と 例外を作成して返すメソッド の2通りの実装方法が考えられます。例えば下記の raise と create です。 <?php class HttpException extends \Exception { /** * 例外を作成して投げ

    PHP で例外を投げるメソッドじゃなく例外を作るメソッドにするただひとつの理由 - Qiita
    n314
    n314 2016/01/07
    ほとんどthrow new FooExceptionしか使わないな。あまり複雑な例外を作ろうとして例外を作る処理にバグがあったら面倒だし。raiseって名前なのにthrowしてないとかあったら大変なので、書くなら return raise('oops'); かなあ。
  • 1