Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
php.iniって何書いているの
Search
Maki Hayashi
June 21, 2024
Programming
2
470
php.iniって何書いているの
開発していた際、うまくいかない原因にphp.iniの設定が絡んでいて、ドツボにはまりました。
よく見る設定とはまった設定をクイズを交えながら紹介します!
Maki Hayashi
June 21, 2024
Tweet
Share
More Decks by Maki Hayashi
See All by Maki Hayashi
仕様変更に耐えるための"今の"DRY原則を考える
mkmk884
8
2.4k
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
7
1.6k
1人プロ・ペアプロ・モブプロの効果的な使い分け
mkmk884
0
1.3k
テスト嫌いな自分の苦手意識がなくなった話
mkmk884
4
830
部内全員で理想の開発部を考え、それに向かって1年間継続して活動に取り組む環境をつくった話
mkmk884
0
180
Other Decks in Programming
See All in Programming
負債になりにくいCSSをデザイナとつくるには?
fsubal
10
2.5k
How mixi2 Uses TiDB for SNS Scalability and Performance
kanmo
40
15k
2024年のWebフロントエンドのふりかえりと2025年
sakito
3
260
CSS Linter による Baseline サポートの仕組み
ryo_manba
1
140
プログラミング言語学習のススメ / why-do-i-learn-programming-language
yashi8484
0
140
Code smarter, not harder - How AI Coding Tools Boost Your Productivity | Angular Meetup Berlin
danielsogl
0
100
お前もAI鬼にならないか?👹Bolt & Cursor & Supabase & Vercelで人間をやめるぞ、ジョジョー!👺
taishiyade
7
4.1k
JavaScriptツール群「UnJS」を5分で一気に駆け巡る!
k1tikurisu
9
1.8k
Djangoにおける複数ユーザー種別認証の設計アプローチ@DjangoCongress JP 2025
delhi09
PRO
4
380
Rubyで始める関数型ドメインモデリング
shogo_tksk
0
120
Open source software: how to live long and go far
gaelvaroquaux
0
650
WebDriver BiDiとは何なのか
yotahada3
1
150
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
How to train your dragon (web standard)
notwaldorf
91
5.8k
The Language of Interfaces
destraynor
156
24k
Rails Girls Zürich Keynote
gr2m
94
13k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Music & Morning Musume
bryan
46
6.4k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
It's Worth the Effort
3n
184
28k
BBQ
matthewcrist
87
9.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.4k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
9
500
Transcript
php.iniって何書いているの まきまき 2024/06/21 【非公式】PHPカンファレンス福岡2024・前日Meetup 1
まきまき @_mkmk884 愛媛→京都→小田原 人生3度目の福岡 今はなきスペースワールドで 人生初ジェットコースターを体験した 2
php.iniとは 3 • 起動時に読み込まれるPHPの設定ファイル • 数百個を超える設定値(ディレクティブ)がある
• php.iniの場所 ◦ phpinfo() ▪ Loaded Configuration File ◦ CLIで
$ php --ini をする • “調べたい環境の”php.iniを確認することが重要 php.iniとは 4
php.iniファイル 5
php.iniで設定できること 6 • エラー出力 • パフォーマンスとリソース制限 • データベース設定 • セッション
• セキュリティ • 文字コード周り …
きょう話したいこと 7 開発していたときにうまくいかない原因に、php.iniの設定が 絡んでいて、ドツボにはまった よく見る設定&はまった設定を紹介します!!!
クイズ!!!どの設定値? 8 \ デーデン!!!!! / ディレクティブ
第1問【初級】 メモリエラー(Allowed memory size of~)が出力されました あなたは、メモリを上げたらとりあえず動くのか、 どのくらいの時間がかかるのかを確かめたいです どの設定値を確認しますか? 9 \
チッチッチッ……⏰ / ① max_input_time ② memory_limit ③ upload_max_filesize
例 第1問【初級】 答え 10 memory_limit • 確保できる最大メモリをバイト数で指定 • デフォルトは128MB memory_limit =
-1 • -1を指定で無制限
第2問【初級】 11 あなたは、ログにNoticeが出てないことに気づきました 出力レベルを変えたいと思っています どの設定値を確認しますか? \ チッチッチッ……⏰ / ① error_reporting ②
display_errors ③ error_log
第2問【初級】 答え 12 error_reporting • “見えるようにする”エラーをレベルで指定できる • 定義されている整数か定数名で指定 エラーって 16種類あんねん E_ERROR,
E_WARNING, E_PARSE, E_NOTICE, E_STRICT など
以前 最新 E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED 第2問【初級】 答え
13 error_reporting ~で、見えないようにするエラーレベルを指定 E_ALL
第3問【上級】 14 \ チッチッチッ……⏰ / ハマった人→ ① post_max_size ② max_input_vars ③ default_charset
あなたは、大量の数の値をPOSTする処理を書いたところ 本質ではなさそうなところで落ちました どの設定値を確認しますか?
例 • 配列の要素もカウント 第3問【上級】 答え 15 max_input_vars • 入力変数を最大で何個まで受け付けるかを指定 • デフォルトは1000個
max_input_vars = 2000
• 設定した数を超える入力変数があった場合 ◦ E_WARNINGが発生 ◦ それ以降の入力変数はリクエストから削除される 第3問【上級】 答え 16 max_input_vars •
ハッシュの衝突を悪用したサービス不能攻撃を受ける 可能性を軽減できる
第4問【上級】 大量の文字列をpreg_matchで正規表現にマッチさせた ところ、A環境では動くのにB環境ではエラーが発生しました どの設定値を確認しますか? 17 \ チッチッチッ……⏰ / ハマった人に 遭遇した人→
① internal_encoding ② mbstring.detect_order ③ pcre.backtrack_limit
第4問【上級】 答え 18 pcre.backtrack_limit • PCREのバックトラック処理の制限値 ◦ Perl Compatible Regular Expressions:Perl互換の正規表現ライブラリ
◦ バックトラック:正規表現エンジンが一致するかどうかを確認するため に文字列の一部に戻って再試行するプロセス • デフォルトは1000000 ◦ PHP < 5.3.7 ではデフォルトが100000
第4問【上級】 答え 19 pcre.backtrack_limit よくある実際のエラーメッセージ Warning: preg_match(): Compilation failed: regular expression
is too large at offset ...
設定値があることで、リソースを枯渇させるのを防いだり、 サービスが攻撃を受ける可能性を軽減できたりする 直面し、調べて思ったこと 20 php.iniの設定値を変えなきゃ動かないものを生み出した時点 で負け ロジックや仕様を見直そう
詳しくはこちらの発表をぜひ… 21 https://speakerdeck.com/uzulla/php-dot-inifalsehua php.iniの話 / uzulla