Help us understand the problem. What is going on with this article?

PHP関連の覚書

More than 1 year has passed since last update.

phpが400番、500番のエラー吐いた時(INTERNAL SERVER ERRORとか)に、Apacheのエラーログを見て原因をたどっていく方法【CentOS7】

これまじで便利なのでおすすめ。

Apacheのエラーログは、
/etc/httpd/logs以下にあります(デフォルト設定)

基本的にエラーログは、error_log [-20180521] ※日付があったりなかったり
って形で保存されてますので、lessとかtailを使って閲覧します。

私のように、https接続を行っている場合、https通信に関してのerror_logは
ssl_error_logファイルに書き込まれており、error_logには残らないのでその点だけ注意です!

phpで変数の中身をファイルに出力(05/24)

int file_put_contents ( string $filename , mixed $data);

が便利。

ただし、配列を出力する場合、これの$dataに配列を入れても
Array
とだけ出力されて肝心のファイルの中身が表示されない。

print_r()関数を使うと、返り値としてわかりやすい形式が返るので、

$dump = print_r( $array , TRUE);
$file_put_contents('hogefile', $dump);

とすれば、

Array
(
    [events] => Array
        (
            [0] => Array
                (
                    [type] => message
                    [replyToken] => xxxxxxxx
                    [source] => Array
                        (
                            [userId] => xxxxxxxx
                            [type] => user
                        )

                    [timestamp] => xxxxxxxxx
                    [message] => Array
                        (
                            [type] => text
                            [id] => xxxxxxx
                            [text] => hoge
                        )

                )
        )
)

みたいな見慣れた形式の出力が指定したhogefileに書き込まれているはず。
ちなみに、hogefileが存在しない場合勝手に作成してくれます。

参考元

型チェック

使い方は簡単。gettype()関数を使うだけ。

echo gettype($ony_total[0]);

-> string

preg_matchの第三引数の型を確かめるときに使用。デバッグに役立つ。
参考:公式ドキュメント

phpの日付

date()関数を使う。文字列を中に入れて

echo $date("m月d日");

-> 04月24日

echo $date("n月j日");

-> 4月24日

ご覧の通り、0を挿入して2桁にしてくれるパターンと、そのまま出力してくれるパターンがあります。

参考にしたのはこれ:phpの日付についての記事
正直これ見たら十分

phpの正規表現(04/24)

$text = "5回";
preg_match("/^[0-9]+/", $text, $array);
echo $array[0];

-> 5

ポイント

・第三引数には、配列が返る。$array[0]には、マッチした分の文字列が入る。
第三引数の$arrayは、事前に宣言されてなくてもよい
・文字列型で返るので、数字を抽出する場合は(int)によるキャストが必要。
参考:公式ドキュメント

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away