php.iniって何書いているの
by
Maki Hayashi
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
php.iniって何書いているの まきまき 2024/06/21 【非公式】PHPカンファレンス福岡2024・前日Meetup 1
Slide 2
Slide 2 text
まきまき @_mkmk884 愛媛→京都→小田原 人生3度目の福岡 今はなきスペースワールドで 人生初ジェットコースターを体験した 2
Slide 3
Slide 3 text
php.iniとは 3 ● 起動時に読み込まれるPHPの設定ファイル ● 数百個を超える設定値(ディレクティブ)がある
Slide 4
Slide 4 text
● php.iniの場所 ○ phpinfo() ■ Loaded Configuration File ○ CLIで $ php --ini をする ● “調べたい環境の”php.iniを確認することが重要 php.iniとは 4
Slide 5
Slide 5 text
php.iniファイル 5
Slide 6
Slide 6 text
php.iniで設定できること 6 ● エラー出力 ● パフォーマンスとリソース制限 ● データベース設定 ● セッション ● セキュリティ ● 文字コード周り …
Slide 7
Slide 7 text
きょう話したいこと 7 開発していたときにうまくいかない原因に、php.iniの設定が 絡んでいて、ドツボにはまった よく見る設定&はまった設定を紹介します!!!
Slide 8
Slide 8 text
クイズ!!!どの設定値? 8 \ デーデン!!!!! / ディレクティブ
Slide 9
Slide 9 text
第1問【初級】 メモリエラー(Allowed memory size of~)が出力されました あなたは、メモリを上げたらとりあえず動くのか、 どのくらいの時間がかかるのかを確かめたいです どの設定値を確認しますか? 9 \ チッチッチッ……⏰ / ① max_input_time ② memory_limit ③ upload_max_filesize
Slide 10
Slide 10 text
例 第1問【初級】 答え 10 memory_limit ● 確保できる最大メモリをバイト数で指定 ● デフォルトは128MB memory_limit = -1 ● -1を指定で無制限
Slide 11
Slide 11 text
第2問【初級】 11 あなたは、ログにNoticeが出てないことに気づきました 出力レベルを変えたいと思っています どの設定値を確認しますか? \ チッチッチッ……⏰ / ① error_reporting ② display_errors ③ error_log
Slide 12
Slide 12 text
第2問【初級】 答え 12 error_reporting ● “見えるようにする”エラーをレベルで指定できる ● 定義されている整数か定数名で指定 エラーって 16種類あんねん E_ERROR, E_WARNING, E_PARSE, E_NOTICE, E_STRICT など
Slide 13
Slide 13 text
以前 最新 E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED 第2問【初級】 答え 13 error_reporting ~で、見えないようにするエラーレベルを指定 E_ALL
Slide 14
Slide 14 text
第3問【上級】 14 \ チッチッチッ……⏰ / ハマった人→ ① post_max_size ② max_input_vars ③ default_charset あなたは、大量の数の値をPOSTする処理を書いたところ 本質ではなさそうなところで落ちました どの設定値を確認しますか?
Slide 15
Slide 15 text
例 ● 配列の要素もカウント 第3問【上級】 答え 15 max_input_vars ● 入力変数を最大で何個まで受け付けるかを指定 ● デフォルトは1000個 max_input_vars = 2000
Slide 16
Slide 16 text
● 設定した数を超える入力変数があった場合 ○ E_WARNINGが発生 ○ それ以降の入力変数はリクエストから削除される 第3問【上級】 答え 16 max_input_vars ● ハッシュの衝突を悪用したサービス不能攻撃を受ける 可能性を軽減できる
Slide 17
Slide 17 text
第4問【上級】 大量の文字列をpreg_matchで正規表現にマッチさせた ところ、A環境では動くのにB環境ではエラーが発生しました どの設定値を確認しますか? 17 \ チッチッチッ……⏰ / ハマった人に 遭遇した人→ ① internal_encoding ② mbstring.detect_order ③ pcre.backtrack_limit
Slide 18
Slide 18 text
第4問【上級】 答え 18 pcre.backtrack_limit ● PCREのバックトラック処理の制限値 ○ Perl Compatible Regular Expressions:Perl互換の正規表現ライブラリ ○ バックトラック:正規表現エンジンが一致するかどうかを確認するため に文字列の一部に戻って再試行するプロセス ● デフォルトは1000000 ○ PHP < 5.3.7 ではデフォルトが100000
Slide 19
Slide 19 text
第4問【上級】 答え 19 pcre.backtrack_limit よくある実際のエラーメッセージ Warning: preg_match(): Compilation failed: regular expression is too large at offset ...
Slide 20
Slide 20 text
設定値があることで、リソースを枯渇させるのを防いだり、 サービスが攻撃を受ける可能性を軽減できたりする 直面し、調べて思ったこと 20 php.iniの設定値を変えなきゃ動かないものを生み出した時点 で負け ロジックや仕様を見直そう
Slide 21
Slide 21 text
詳しくはこちらの発表をぜひ… 21 https://speakerdeck.com/uzulla/php-dot-inifalsehua php.iniの話 / uzulla