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
1
470
php.iniって何書いているの
開発していた際、うまくいかない原因にphp.iniの設定が絡んでいて、ドツボにはまりました。
よく見る設定とはまった設定をクイズを交えながら紹介します!
Maki Hayashi
June 21, 2024
Tweet
Share
More Decks by Maki Hayashi
See All by Maki Hayashi
仕様変更に耐えるための"今の"DRY原則を考える / Rethinking the "Don't repeat yourself" for resilience to specification changes
mkmk884
5
1.4k
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
6
1.6k
1人プロ・ペアプロ・モブプロの効果的な使い分け
mkmk884
0
1.3k
テスト嫌いな自分の苦手意識がなくなった話
mkmk884
3
810
部内全員で理想の開発部を考え、それに向かって1年間継続して活動に取り組む環境をつくった話
mkmk884
0
170
Other Decks in Programming
See All in Programming
Kubernetes History Inspector(KHI)を触ってみた
bells17
0
230
PHPカンファレンス名古屋2025 タスク分解の試行錯誤〜レビュー負荷を下げるために〜
soichi
1
300
ペアーズでの、Langfuseを中心とした評価ドリブンなリリースサイクルのご紹介
fukubaka0825
2
330
Rubyで始める関数型ドメインモデリング
shogo_tksk
0
120
XStateを用いた堅牢なReact Components設計~複雑なClient Stateをシンプルに~ @React Tokyo ミートアップ #2
kfurusho
1
920
もう僕は OpenAPI を書きたくない
sgash708
5
1.8k
動作確認やテストで漏れがちな観点3選
starfish719
6
1.1k
ML.NETで始める機械学習
ymd65536
0
130
sappoRo.R #12 初心者セッション
kosugitti
0
260
社内フレームワークとその依存性解決 / in-house framework and its dependency management
vvakame
1
560
Software Architecture
hschwentner
6
2.1k
一休.com のログイン体験を支える技術 〜Web Components x Vue.js 活用事例と最適化について〜
atsumim
0
580
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
133
33k
The Cult of Friendly URLs
andyhume
78
6.2k
Producing Creativity
orderedlist
PRO
344
39k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
9
450
Building a Scalable Design System with Sketch
lauravandoore
461
33k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
51k
Building Applications with DynamoDB
mza
93
6.2k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Statistics for Hackers
jakevdp
797
220k
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