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
490
php.iniって何書いているの
開発していた際、うまくいかない原因にphp.iniの設定が絡んでいて、ドツボにはまりました。
よく見る設定とはまった設定をクイズを交えながら紹介します!
Maki Hayashi
June 21, 2024
Tweet
Share
More Decks by Maki Hayashi
See All by Maki Hayashi
小さく段階的リリースすることで深夜メンテを回避する
mkmk884
2
120
仕様変更に耐えるための"今の"DRY原則を考える
mkmk884
9
3.5k
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
7
1.8k
1人プロ・ペアプロ・モブプロの効果的な使い分け
mkmk884
0
1.4k
テスト嫌いな自分の苦手意識がなくなった話
mkmk884
4
880
部内全員で理想の開発部を考え、それに向かって1年間継続して活動に取り組む環境をつくった話
mkmk884
0
190
Other Decks in Programming
See All in Programming
20250326_生成AIによる_レビュー承認システムの実現.pdf
takahiromatsui
17
5.1k
SLI/SLOの設定を進めるその前に アラート品質の改善に取り組んだ話
tanden
2
690
‘무차별 LGTM~👍’만 외치던 우리가 ‘고봉밥 코드 리뷰’를?
hannah0731
0
520
私の愛したLaravel 〜レールを超えたその先へ〜
kentaroutakeda
11
3.4k
Going Structural with Named Tuples
bishabosha
0
160
フロントエンドテストの育て方
quramy
8
2.4k
自分のために作ったアプリが、グローバルに使われるまで / Indie App Development Lunch LT
pixyzehn
1
120
Kubernetesで実現できるPlatform Engineering の現在地
nwiizo
2
1.7k
PHPUnit 高速化テクニック / PHPUnit Speedup Techniques
pinkumohikan
1
1.2k
CQRS+ES勉強会#1
rechellatek
0
390
Coding Experience Cpp vs Csharp - meetup app osaka@9
harukasao
0
110
WordPress Playground for Developers
iambherulal
0
120
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.4k
Building Adaptive Systems
keathley
40
2.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
7
610
Building an army of robots
kneath
304
45k
Rails Girls Zürich Keynote
gr2m
94
13k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Navigating Team Friction
lara
183
15k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Bash Introduction
62gerente
611
210k
Optimizing for Happiness
mojombo
377
70k
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