php.iniの話

271fad8d53cd1f12f2b4b6d38e3d7bd3?s=47 uzulla
December 03, 2016

 php.iniの話

builderscon tokyo 2016
20161203
uzulla

271fad8d53cd1f12f2b4b6d38e3d7bd3?s=128

uzulla

December 03, 2016
Tweet

Transcript

  1. php.iniͷ࿩

  2. builderscon tokyo 2016 2016/12/3

  3. ࣗݾ঺հ uzulla

  4. ͦΜͳ͜ͱΑΓ

  5. PHP7.1.0 release!

  6. !!!!!! » Nullable types » Void return type » Iterable

    pseudo-type » Class constant visiblity modifiers » Square bracket syntax for list() and the ability to specify keys in list() » Catching multiple exceptions types
  7. None
  8. ࿩͠Λ໭͠·͢

  9. ͑ͬɺphp.iniͷ࿩ΛҰ࣌ؒʁ

  10. None
  11. ʮօ͞ΜPHPΛ஌͍ͬͯ·͢ʯ

  12. » ΋͸΍஌Βͳ͍ͱ͸ݴΘ͞ͳ͍ » ͳͷͰɺPHP͕Ͳ͏͍͏΋ͷͳͷ͔ͱ͍͏ͷ͸লུ

  13. php.iniΛ͍ͬͯ͠·͔͢ʁ » php࣮ߦ࣌ͷ༷ʑͳεΠον » ಺෦ͷจࣈίʔυͱ͔… » ೔෇ܭࢉ࣌ͷλΠϜκʔϯͱ͔…

  14. จࣈίʔυؔ࿈Ͱͷྫ php > echo strlen("͍͋͏͓͑"); 15 » strlen͸ϚϧνόΠτඇରԠؔ਺ » UTF-8Ͱ͸̍จࣈ͕3όΠτͳͷͰɺ5จࣈ͕15όΠτͱͯ͠ܭࢉ͞Ε

    ͍ͯΔ
  15. ໪࿦PHP͸ϚϧνόΠτͷจࣈྻ΋ಡΈॻ͖Ͱ͖·͢ɻ php > echo mb_strlen("͍͋͏͓͑"); 5 » ϚϧνόΠτରԠؔ਺(mbؔ਺)Λ࢖͏ࣄͰਖ਼͘͠ॲཧ͕Ͱ͖Δ » ͨͩ͠ɺੈͷத͸UTF-8͚ͩͰ͸ͳ͍

    » UTF-16LE, SJIS, EUC-JP ...
  16. mbؔ਺͸ɺѻ͏จࣈίʔυΛઃఆ͔Β൑அ͍ͯ͠Δ php > var_dump( ini_get("mbstring.internal_encoding")); string(5) "UTF-8" » ͔ͩΒɺ͖͞΄Ͳmb_strlen͕ਖ਼͘͠਺͑ΒΕͨ »

    mbstring.internal_encodingͱ͍͏Ωʔʹɺ "UTF-8"ͱ͍͏஋͕͸͍͍ͬͯ·͢ɻ ͜Ε͕php.iniͷઃఆͰ͢ɻ » ͜͏͍͏ઃఆ͕ɺʢ؀ڥʹΑΔ͕ʣΏ͏ʹ200ݸҎ্͋Δ
  17. ઃఆΛɺUTF-8͔Βม͑ͯΈΔ php > echo mb_strlen("͍͋͏͓͑"); 5 php > ini_set("mbstring.internal_encoding", "SJIS-win");

    php > echo mb_strlen("͍͋͏͓͑"); 8 » ͱ͍͏͜ͱͰɺ಺෦ॲཧΛSJIS-win(cp932)ʹ͢Δͱ… » ͦͷ৔͔ΒΤϥʔ΋ͳ͘ɺจࣈ਺͕ਖ਼͘͠Χ΢ϯτͰ͖ͳ͘ͳΔɻ
  18. ʮͳΜͰݴޠʹ͜ΜͳεΠον͕͋Δͷʁίʔυʹ͔͚͹͍͍ͷͰ͸ʁʯ » ʢͦΕ΋ʢ͋Δఔ౓ʣͰ͖·͕͢ʣ » ࠩҟΛphp.iniʹूΊɺίʔυ͸मਖ਼ແ͘ಈ͔͍ͨ͠ͱ͍͏ر๬ͱɺ » ʢ࣮ࡍɺ͜Ε͸͔ͳΓ੒ޭ͍ͯ͠Δʣ » աڈͷޓ׵ੑΛอͭͨΊͷ౒ྗͳͷͰ͢ɻ »

    ʢͨͱ͑͹ੲ͸UTF-8ͳΜͯ࢖ΘΕͯͳ͔ͬͨ͠ʣ
  19. ·ͱΊ » PHP͸ઃఆϑΝΠϧ͕͋Δ » தʹ͸େྔͷઃఆεΠον͕͸͍͍ͬͯΔ » ͦΕ͸ɺΩʔͱ஋ͷू߹Ͱ͋Δ

  20. php.iniͷྺ࢙

  21. php.iniͷྺ࢙ » php.ini͸php3͔Βొ৔ » 1998೥ͷࣄ » ݱࡏͷ࠷৽͸php7.1.0 » ࠓ͸2016೥ »

    18೥ͷ݄೔͕ྲྀΕ͍ͯ·͢ɻ
  22. PHP3.0ͷphp.ini-distʢൈਮʣ [PHP_3] engine = On ; enable PHP 3.0 parser

    short_open_tag = On ; allow the <? tag. otheʙ precision = 14 ; number of significant dʙ y2k_compliance = Off ; whether to be year 2000ʙ safe_mode = Off safe_mode_exec_dir = max_execution_time = 30 ; Maximum execution tiʙ memory_limit = 8388608 ; Maximum amount of meʙ error_reporting = 7
  23. PHP7ͷiniʢൈਮ [PHP] engine = On short_open_tag = Off precision =

    14 serialize_precision = 17 zend.enable_gc = On expose_php = On max_execution_time = 30 max_input_time = 60 memory_limit = 128M error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
  24. มΘͬͯͳ͍Ͱ͢Ͷ » օ͞Μ͕਌͠Έ͋Δ߲໨͹͔Γ » safe_mode΍y2k_complianceʢջ͔͍͠ʣͱ͔͸ফ͑ͨ » memory_limitͷσϑΥϧτͱ͔͸ແ࿦(?)૿͑ͨ » error_reporting͸ఆ਺Խ »

    php3 213ߦ => php7 1933ߦ » ʢίϝϯτ͕ಛʹ૿͑ͨʣ
  25. » ʮphp.iniͷ஌ࣝ͸20೥࢖͑Δ!ʯʢ͔ͩΒʁ » ͨͿΜ php8,9,10΋ʂʢ͋Δͷ͔ʁ » ͍҃͸PHP2020ͱ͔Ͱ΋͔ͭ͑ΔͩΖ͏ » ʮ(͓ͦΒ͘)20೥Ҏ্࢖͑Δphp.iniΛ֮͑Δͷ͸όϦϡʔ!(?)ʯ »

    ʮͳΜͱHHVMͰ΋͔ͭ͑Δٕज़✌ʯ » (.hdfͱ͍͏ίϯϑΟά͸ແ͔ͬͨࣄʹ͞Εͭͭ͋Δ)
  26. ͱ͍͏͜ͱͰ » օ͞Μͷҙཉ͸༙͍͖ͯ·ͨ͠ʁ! » ʢҙཉ͕༙͍ͨΒਅ໘໨ʹ࿩͠ɺҙཉ͕ͳͦ͞͏ͳΒ…"ʣ

  27. جૅ஌ࣝ

  28. جૅ஌ࣝ » php͸ΠϯλϓϦλݴޠͰ͢ » ΢ΣϒΞϓϦέʔγϣϯ։ൃʹ࢖ΘΕΔલఏͰ͢ » ࠓ೔͸phpΛ » ࣮ߦΤϯδϯ »

    SAPI » ͰɺΘ͚ͯߟ͑·͠ΐ͏
  29. PHPͷ࣮ߦ؀ڥͬͯ৭ʑ͋Δ » Apache+mod_php » Apache+CGI » nginx+FastCGI » IIS+FastCGI »

    builtin server » (΋ͬͱ͋Δ)
  30. PHPͷੌ͍ॴ » ͜ΕΒόϥόϥͷ࣮ߦ؀ڥͰ » ʮಉҰίʔυͷWordPress͕ಈ͘ʯ » ͱ͍͏Ϩϕϧͷޓ׵ੑ͕͋Δ » ͭ·Γ…

  31. PHP͸ɺίʔυमਖ਼ແ͠ʹ 12ԯ ͷαΠτͰಈ͘ʂ

  32. ʮ30ԯͷσόΠεͰಈ͘Javaʹ͸ෛ͚ͨʢʣʯ

  33. ʢࡶͳࣄΛ͍͍·ͨ͠ʣ » ਺ࣈͷཧ۶ͷग़య » Netcraftᐌ͘ɺωοτͷαΠτ਺͸໿15ԯɺ » https://news.netcraft.com/archives/2016/11/22/ november-2016-web-server-survey.html » w3techsᐌ͘ɺPHPγΣΞ͸82%

    » https://w3techs.com/ » ʢ15ԯͷ80%͕12ԯʣ
  34. େ෼਺ࣈ͸੝Γ·͕ͨ͠ » ࣮ࡍɺPHPͷ99%ͷ࣮ߦ؀ڥͰ » ͋ͷWordPress΍Β͕ » PHPͷίʔυमਖ਼ෆཁͰ͏͘͝ʂ » ͜Εͦ͜PHP!!

  35. » ʮઈରͩͳʁྫ֎ͳ͠ʁʯʮ΢ο…શ෦ࢼͨ͠༁Ͱ͸ແ͍…ʯ » ʮগͳ͘ͱ΋ɺCLI͸ผ…ʯʮӕ͖ͭͩʂʂʯ

  36. ʢҰ෦ͷΈͳ͞Μʣ ʮ͑ͬɺͦΕͬͯੌ͍ͷʁʯ

  37. » ʮ͡Ό͋ɺPerlͰɺmod_perlͱCGIͱPlackͰ̍ίʔυͰಉ౳ʹಈ ࡞͢Δ΢ΣϒΞϓϦͷॻ͍ͯΑʂʂʂʂʯ » ʮ͡Ό͋ɺRubyͰʢ͈́ʯ » ʮ͡Ό͋ɺ͡Ό̱ʢ͈́ʯ » ʮʢ͈́ʯ »

    ʢεʔύʔΤϯδχΞͳΒॻ͚Δ͔΋͠Εͳ͍͚Ͳɺ ɹ૬౰มͳίʔυʹͳΔʣ
  38. ؀ڥͷࠩΛຒΊͯΔͷ͕SAPI » SAPI͕ɺ؀ڥͱPHPΤϯδϯͷؒͰͱΓͳ͍ͯ͠Δ » SAPIͷ͓ӄͰɺphpʢͰॻ͔ΕͨϓϩάϥϜʣ͸ » echo͢Ε͹ϒϥ΢βʹग़Δ » Τϥʔ͕ΤϥʔϩάʹͰΔ »

    $_POST΍$_FILEͰύϥϝλ͕ͱΕΔ » ແ৺Ͱηογϣϯ͕࢖͑Δʢ$_COOKIE౳ɺhttpϔομʣ » …ͱ͍ͬͨ͜ͱ͕ීวతʹѻ͑Δ
  39. SAPIͱ͸ʁ » Server API ͷུ » mod_phpɺCGIɺFastCGIɺCLIɺ౳ʑ » ૊Έ߹ΘͤΔhttpd΍؀ڥʹ߹ΘͤͯબͿ »

    apacheͳΒmod_php,CGI,FastCGI » nginxͳΒFastCGI » IISͳΒCGI,FastCGI
  40. ͦΕͧΕͰ݁ߏҧ͏ » ಉ͡ʮPHPʯ͚ͩͲɺSAPIຖʹҧ͏όΠφϦͩͬͨΓ͢Δ » mod_php͸libphp7.soɺCGI͸php-cgiɺCLI͸php » ʢFastCGIͱCGIΈ͍ͨͳྫ֎΋͋Δ͚Ͳʣ

  41. » httpdͱಉҰϓϩηεͰ͏͘͝ ʢmod_phpʣ » ඪ४ೖग़ྗͰ΍ΓͱΓ͢Δ ʢCGI,CLIʣ » FastCGIϓϩτίϧͰ΍ΓऔΓ͢Δ ʢFastCGIʣ »

    httpͰ΍ΓऔΓ͢Δ …ͷ͸ͳΜͱແ͍ » ʢBuiltin server͸։ൃ༻Ͱ͢ʣ
  42. » (ྫ֎΋͋Γ·͢) » (ʮPHPࣗମʯ͕httpdʹͳΔ΍ͭͱ͔ » (reactPHP » (Swoole » (AppServer.IO

    » (౳ » (Ͱ΋ɺݟͨࣄͳ͍Ͱ͠ΐʁ)
  43. Ͱɺຊ୊ͷphp.iniͱSAPIɺͲ͏ؔ܎͕ʁ » ৭ʑΛSAPI͕ٵऩͯ͠ɺphpίʔυʹ͸ޓ׵ੑ͕͋Δ » ͔͠͠ɺphp.ini͸ͦ͏΋͍͔ͳ͍ͷͰ͋ͬͨ » αʔόʔߏ੒͕શવҧ͏ » ౰વɺઃఆͷ࢓ํ΋݁ߏҧ͏ »

    ໪࿦ɺઃఆͰ͖Δ߲໨͕ଟগҧ͏ » ͭ·Γɺphp.iniΛ஌Δʹ͸SAPIΛҙࣝ͢Δඞཁ͕͋Δ
  44. ۩ମతʹ͸ʁ » ޙड़͠·͢ » php.iniͷ৔ॴ͕ҧ͏ » օେ޷͖.htaccess͕ͳ͔ͬͨΓ » σϑΥϧτ஋͕มΘΔ »

  45. ్த·ͱΊ » ༷ʑͳ࣮ߦ؀ڥ͕͋Δ͕ɺphp͸Ͳ͜Ͱ΋ಉ༷ʹಈͧ͘ʂ! » ࠩҟ͸SAPI౳͕ٵऩ͍ͯ͠Δ" » ͔͠͠ɺphp.iniʢ΍ͦͷपลʣ͸ͦͷݶΓͰ͸ͳ͍# » ʢͱ͸͍͑ɺϝδϟʔͳ؀ڥͷ৘ใ͸άάΕ͹͙͢Ͱ͖ͯ·͢ɻ ɹେਓؾPHPͩ΋Μʣ

    » ʢ"PHP ʹΑΔ hello world ೖ໳"ͱ͍͏هࣄ͕ͱͯ΋ྑ͍Ͱ͢ ɹhttp://tech.respect-pal.jp/php-helloworld/ʣ
  46. php.iniΛݟΔ

  47. [PHP] ;;;;;;;;;;;;;;;;;;; ; About php.ini ; ;;;;;;;;;;;;;;;;;;; ; PHP's initialization

    file, generally called php.ini, is responsible for ; configuring many of the aspects of PHP's behavior. ུ engine = On expose_php = On max_execution_time = 30 max_input_time = 60
  48. Ͳ͜ʹ͋Δͷ͔! » /etc ҎԼΛ୳͢ » CLIͰ php --ini » phpinfo()

    ͷʮLoaded Configuration Fileʯͱ ʮAdditional .ini files parsedʯ » php_ini_loaded_file() ͱ php_ini_scanned_files();ͷฦ஋
  49. ஫ҙ » ✅ʮௐ΂͍ͨ؀ڥͷɺௐ΂͍ͨϑΝΠϧͰ͠Β΂Ζʂʯ » ⚠ʮCLIͷphpͱɺوํ͕ௐ΂͍ͨ؀ڥ͸ຊ౰ʹಉ͡php͔ʁʯ » ·Δ͖ͬΓผͷϑΝΠϧͳΜͯࣄ͕βϥʹ͋Δ# » SAPIͰphp.iniͷ৔ॴ͕ࢦఆͰ͖Δ »

    ଞʹ΋͋Δ͚Ͳޙड़ » ⚠ඇtext/htmlͳAPI౳͸phpinfo()͸໘౗ͩͧʢޙड़ʣ
  50. ඞવతʹ » php_ini_loaded_file() ͱ php_ini_scanned_files();ͷฦ஋͕ɺ ҆શͩͱ͓΋ΘΕ·͢ʢݸਓతҙݟͰ͢ʣ » ͜ΕΛฦ஋Ͱऔಘ͠ɺͲ͔͜ͷϑΝΠϧʹͰ΋ॻ͖ग़͍ͯͩ͘͠͞ » ʢ!ʮ໘౗ɺ஫ҙ͢Ε͹php

    --ini΍phpinfoͰ͍͍ͷͰ͸ʁʯ ɹ"ʮ͸͍ɺ΅͘΋Αͦ͘ΕͰௐ΂·͢ʯʣ
  51. ௐ΂͍ͨॴʹίʔυૠೖ $info = php_ini_loaded_file().",\n"; $info .= php_ini_scanned_files(); error_log($info); // ϑΝΠϧʹग़ྗ

    ҎԼ݁Ռ /Users/uzulla/.phpenv/versions/7.0.1/etc/php.ini, /Users/uzulla/.phpenv/versions/7.0.1/etc/conf.d/xdebug.ini, /Users/uzulla/.phpenv/versions/7.0.1/etc/conf.d/my_special.ini
  52. tips: σόοάϩάΛͲ͔͜ʹग़͢ͳΒ… » file_put_contents('/tmp/info.txt', $info); » ఆ൪ɺָͰ͸͋Δ » ೋճ૸ͬͨΒ্ॻ͖͞ΕͪΌ͏…ʢAppend͢Δʁʣ »

    /tmp ʹݟ͔ͭΒͳ͍ࣄ΋ » ࠷ۙ͸ private tmp ͱ͍͏΋ͷ͕͋ͬͯͳ…
  53. » phpʹ͸error_log()ͱ͍͏ศརؔ਺͕͋Δ » error_log($info); » نఆͷΤϥʔϩάʹͰ·͢ » ʢͨͱ͑͹ɺapacheͷerror_logʹग़Δʣ » error_log($info,

    $filename); ͱϑΝΠϧ໊ࢦఆ΋Ͱ͖·͢ » ʮ௕͍ͱ੾ΓࣺͯΒΕΔͷͰɺͦͷ৔߹͸php.iniͰ log_errors_max_lenΛ;΍͠·͠ΐ͏ʯʮ͏ʔΜʯ
  54. ॴͰ… » php.iniͬͯҰ͔ͭ͠ͳ͍ΠϝʔδͳΜ͚ͩͲɺͳΜͰෳ਺͋Δͷʁ /Users/uzulla/.phpenv/versions/7.0.1/etc/php.ini, /Users/uzulla/.phpenv/versions/7.0.1/etc/conf.d/xdebug.ini, /Users/uzulla/.phpenv/versions/7.0.1/etc/conf.d/my_special.ini

  55. » Config file scan directoryͱΑ͹Εɺ࠷ۙΑ͔ͭ͘ΘΕ͍ͯ·͢ » php --ini ౳Ͱ͠Β΂ΒΕ·͢(Scan for

    additional .ini files) » ༗ΔσΟϨΫτϦҎԼͷ *.ini ͕શ෦ಡ·Ε·͢ɺ/etc/php.ini ͱ ಉ౳ » ʮΠϯϑϥετϥΫνϟʔΞζίʔυʹͽͬͨΓ!ʯ » ʢphp.iniͷઃఆΛॻ͖׵͑Δͷʹɺsedͱ͔΋͏ͨ͘͠ͳ͍͔Β Ͷ…ʣ » ͳ͓ɺಉҰͷઃఆهड़͕͋ͬͨ৔߹ɺ্ॻ͖͞Ε·͢
  56. ·ͱΊ » php.iniͷ৔ॴ͕օ͞ΜΘ͔Γ·ͨ͠Ͷ » ܁Γฦ͠ʹͳΔͷͰ͕͢ɺ͔ͳΒͣ ✅ʮௐ΂͍ͨϑΝΠϧͷɺௐ΂͍ͨߦͰௐ΂Δʯ ࣄΛ๨Εͳ͍Ͱ͍ͩ͘͞Ͷɻ

  57. php.iniΛॻ͘

  58. » php.ini͸ςΩετͷઃఆϑΝΠϧͰ͢ » ݟͨΒղΔఔ౓ͷγϯϓϧͳ΋ͷͰ͢ » Ͳ͏͍͏߲໨͕͋Δ͔͸ɺphp.netΛΈΑ͏ʢࡶʣ

  59. ϑΥʔϚοτʹ͍ͭͯ ; comment here [hoge] key = value key2 =

    "this is value2" key3 = On key4 = This is value4 ; ΫΦʔτ͸࣮͸ෆཁ
  60. » γϯϓϧͳɺΩʔͱ஋ϖΞ » ;ͷޙ͸ίϝϯτͰ͢ » [ʙ]͜Ε͸ແࢹ͞Ε·͢ɺԿΛॻ͍ͯ΋ҙຯͳ͍Ͱ͢ɻ » ͦ͏ʮ⚠sectionʹҙຯ͸ແ͍ʯΜͰ͢ʢҎ֎ͱ஌ΒΕͯͳ͍ʣ » ໨ҹͰ͔͠ͳ͍

    » (hoge[] = fugeͱ͍͏ॻ͕ࣜ͋Δ͕ɺݟ͔͚ͳ͍)
  61. ܕ͸(࣮࣭)ೋछྨ͚ͩ » String » Boolean » On/Off, true/false, yes/no,none »

    ⚠boolean͸ஸೡʹ͔͍͋ͭ·͠ΐ͏
  62. » (integer) » ʢͬͯ͋Δ͚Ͳɺ࣮࣭StringͰ͸…ʣ

  63. ಉ͡Ωʔ͕͋Ε͹ɺ্ॻ͖Ͱ͢ mbstring.strict_detection = On mbstring.strict_detection = Off // OffʹͳΓ·͢ »

    ॏෳ͸ΤϥʔʹͳΓ·ͤΜ
  64. » ͨͩ͠ɺॱং͕ҙຯΛ࣋ͭ৔߹΋͋Γ·͢ » ྫɿmbstring.languageͱmbstring.internal_encoding » ྫɿdefault_charsetͱinternal_encoding » ʢলུ͞Εͨͱ͖ɺ͋Δ஋Λ҉໧ͰσϑΥϧτͱͯ͠࢖͏ɺ౳ʣ

  65. ಥવphp.iniΫΠζʂ

  66. ҎԼͷߦɺͲΕ͕ʮΤϥʔʯʂʁ k1 = 1 k2 = True k3 = On

    k4 = "On" k5 = text contain new line. k6 = text
  67. ਖ਼ղ͸ɺʮΤϥʔʯʹ͸ͳΓ·ͤΜʂʂ » ʮΤϥʔͰ͓͜ΒΕͳ͍͚Ͳʯk5ͷ஋͸"text contain"ͱͳΔ » A=B ܗࣜҎ֎͸ಡΈඈ͹͞ΕΔ » ⚠ͭ·Γɺϛεͬͯ΋͖͔ͮͳ͍ͧʢ஫ҙʂʣ »

    ⚠BooleanʹޡͬͨςΩετΛ͋ͯͯ΋ແࢹ͞Ε·͢ » Α͋͘Δྫ: hoge = enable ͱ͔…
  68. ୈೋ໰

  69. ҎԼͷߦɺͲΕ͕ʮΤϥʔʯʂʁ ೔ຊਓ = ೔ຊޠ # hoge = 1 1 echo

    ! ⭕=❌ [] ]
  70. ਖ਼ղ͸ɺʮΤϥʔʹͳΓ·ͤΜʯʂʂʂʂ » ⚠܁Γฦ͠ʹͳΓ·͕͢ɺϛεͬͯ΋ؾ͚ͮͳ͍ͧ

  71. ΤϥʔʹͳΔͷ͸ҎԼ͘Β͍Ͱ͢ » ߦͷઌ಄ʹ = » ಉҰߦʹ ] Ͱด͡ΒΕ͍ͯͳ͍ [

  72. ͱ͜ΖͰɺಠࣗͷΩʔ͸ೖΕΒΕΔͷ͔ʁ » ࣗ෼ͷΞϓϦͷม਺ͱ͔ɺτʔΫϯͱ͔ » ෆՄೳͰ͢ɺແࢹ͞Ε·͢ɻ » ͦ͏͍͏ศར؀ڥม਺Ͱ͸ͳ͍

  73. ؀ڥม਺ΛಡΈࠐΊΔΑ » mysqli.default_user = ${MYSQL_DEFAULT_USER} » ͔ͭͬͨ͜ͱ͸΄΅ແ͍ͳ…! » ʢPHPੈքͰ͸ɺ͋·Γ؀ڥม਺͸͔ͭΘΕͳ͍(ओ؍ʣʣ

  74. ΤϥʔʹͳΒͳ͍ͷා͍ʁlint͍ͨ͠ʁ » iniΛύʔε͢Δؔ਺͸͋Γ·͢ » parse_ini_file, parse_ini_string » http://php.net/manual/ja/function.parse-ini-file.php php >

    var_dump(parse_ini_file('dummy.ini')); array(9) { ["k1"]=> string(1) "1" ུ
  75. » ͨͩ͠ɺʮphp.iniʯͱͯ͠ਖ਼͍͔͠Ͱ͸ͳ͍ » ⚠php.iniͱͯ͠ਖ਼͍͔͠lint͢Δπʔϧ͸ແ͍ » ʢͭΒ͍ʣ » ํ๏͸ޙड़͠·͕͢ɺઃఆͨ͠Βඞͣ֬ೝ͠·͠ΐ͏

  76. ൓ө͢Δʹ͸… » php ࣮ߦ؀ڥΛ࠶ىಈ » apache » php-fpm » ౳

  77. ൓ө͞Εͳ͍Μ͚ͩͲʁ! » ͪΌΜͱ࠶ىಈͨ͠ʁCLIͱmod_php͸ผͰ͢Α » nginxΛ࠶ىಈͯ͠ͳ͍ʁ(fpmΛ࠶ىಈ͠·͠ΐ͏) » php.iniͷ৔ॴɺؒҧ͑ͯͳ͍ʁ » ಠཱͨ͠phpinfo()Ͱ͸൓ө͞Εͯͳ͍ʁ »

    ൓ө͕ޙʑ্ॻ͖͞Ε͍ͯͳ͍ʁʢޙड़ʣ » ҰԠϩά΋ݟΑ͏
  78. ·ͱΊ » php.ini͸ςΩετͷઃఆϑΝΠϧ » จ๏ϛε΍هೖϛε͸εϧʔ͞ΕΔͧ » ઃఆͨ͠Βɺ͙֬͢ೝ » ൓өʹ͸࠶ىಈ

  79. php.iniΛௐ΂Δ

  80. » !ʮ͖ͬ͞࿩ͨ͠ͷͰ͸ʁʯ » "ʮphp.iniϑΝΠϧ(ઃఆ)ͱɺphp.ini(ݱ࣮)͸ҧ͏ʯ

  81. Ͳ͜Ͱ΋ઃఆͰ͖ͯศརͳphpͷઃఆ৔ॴࣄྫ » php.ini ΍ scan dirͷ.ini » httpd.conf ΍ nginx.conf

    » .htaccess ΍ .user.ini » ϢʔβʔϓϩάϥϜ಺ » ʮ͋Δؔ਺(౳)Λ࣮ߦ͢Δͱɺ҉໧ʹมΘΔʯ » ؀ڥม਺ɺWindowsͷϨδετϦ…etcetc
  82. » ͭ·Γɺphp.iniʢϑΝΠϧʣΛ͍͘Βݟͯ΋ແବͱ͍͏͜ͱͩʂ ϫϋϋϋʂ!

  83. » ϫϋϋͰ͸ͳ͍!

  84. ͳ͓ » ʮͲ͜Ͱઃఆ͞ΕΔ͔ʯΛશ෦ௐ΂Δࣄ͸ࠔ೉ » ͦ΋ͦ΋ɺͲ͜Ͱઃఆ͞Εͨͷ͔͕໾ཱͭࣄ΋গͳ͍ » ⚠มΘ͍ͬͯΔͱ͍͏͜ͱ͸ɺͲ͔͜Ͱҙਤ͕͋ͬͯ΍͍ͬͯΔ » ⚠্ҐͰ͔͑ͪΌ͏ͱϩΫͳ͜ͱʹͳΒͳ͍

  85. ͓΋͍ͩ͠·͠ΐ͏ » ✅ʮௐ΂͍ͨ؀ڥͷɺௐ΂͍ͨϑΝΠϧͰ͠Β΂Ζʂʯ

  86. » ͱɺ͍͏͜ͱͰɺօ͞Μ͸php.iniʢཧ૝ʣΛݟ্ͨͰɺphp.iniʢݱ ࣮ʣ΋ݟΔඞཁ͕͋Δͷͩͬͨ…ɻ

  87. ௐ΂ΔͨΊͷؔ਺ » phpinfo > লུ » ini_get > Α͔ͭ͘͏ »

    ini_get_all > ࢲ͸Α͔ͭ͘͏ » get_cfg_var > ໨త͕ҧ͏
  88. ࢝·ΓͱऴΘΓͷ஍ɺphpinfo() <?php phpinfo(); » ͢΂͕ͯ͜͜ʹ͋Δ » جຊதͷجຊ

  89. ม਺ʹΩϟϓνϟ͸Ͱ͖ͳ͍ͷͰ… ob_start(); phpinfo(); $info = ob_get_clean(); file_put_contents('/tmp/phpinfo.html', $info); » ͠ΜͲ͍ɺͷͰɺඍົɻ

  90. ini_get() » ini_get ( string $varname ) » ݱࡏͷઃఆΛҰͭऔಘͰ͖Δ »

    ⚠ࣦഊ࣌ʹ͸False͕ฦΔ » ⚠ฦ஋͸ʮStringʯͰ͋Δ
  91. ʮࣦഊ࣌ʹfalseΛฦ͠·͢ʯ » ϛΤϛΤͷ᠘ » ⚠PHPͷࣗಈม׵ͰɺfalseͱۭจࣈΛϛεΔ » Α͋͘Δϛε͕ҎԼ if( ini_get('display_error') ){

    die('display_error͸ফ͠·͠ΐ͏'); }
  92. if( ini_get('display_errors') ){ die('display_errors͸ফ͠·͠ΐ͏'); } » ʢ͜ͷίʔυ͕Ͳ͏ͳͷ͔ɺͱ͍͏ͷ͸ଞॴʹஔ͘ͱͯ͠ʣ » ͨͩ͘͠͸display_errorsʢݸਓతʹΑ͋͘ΔTypoʣ »

    ΩʔΛؒҧ͑Δͱɺ͔ͳΒͣfalseʹͳΔ » ʮ·͋ɺ===΍Ε͹͍͍Ͱ͢ΑͶʂʯʢ܇࿅͞Εͨਓؒͷൃ૝ʣ
  93. ʮini_get͸StringͰฦ͖ͯ͠·͢ʯ » ͦ͏Ͱ͔͢ » ΈͯΈ·͠ΐ͏

  94. // php.iniʢϑΝΠϧʣͰ͸ Off ͩͱ… short_open_tag = Off // ͜ͷΑ͏ʹۭจࣈ͕ฦͬͯ͘Δ php

    > var_dump(ini_get('short_open_tag')); string(0) "" » php.ini هड़ͷ··Ͱ͸ͳ͍ʢྫ֎΋͋Δʣ » มΘΔͷ͸ྑ͍͕ɺॳݟࡴ͠Ͱ͢ » ͳͥ On/Offɺtrue/falseɺ1/0 ౳Ͱͳ͍ͷ͔… » ʮࣗಈม׵ͷPHPͰ͢ɺ׳Ε·͠ΐ͏!ʯ
  95. php > var_dump( ini_get('upload_max_filesize')); string(4) "2M" » upload_max_filesize ͸هड़͕ͦͷ··Ͱ͖ͯ·͢ »

    upload_max_filesize ͷࢦఆʹ͸ɺK,M,GͳͲͷ୹ॖه๏͕࢖͑ͯਓ ͕ಡΈ΍͘͢Ͱ͖Δɻ » http://php.net/manual/ja/ faq.using.php#faq.using.shorthandbytes » ͔͜͠͠ΕʹΑͬͯҾ͖ى͜͞ΕΔ൵ܶʂ()
  96. php > echo ini_get('upload_max_filesize'); 2M // 2Mbyte = 2*1024*1024 if(

    1*1024*1024 > ini_get('upload_max_filesize') ) { die("plz more!!!"); } //-> plz more!! // ͋ΕΕΕʁ php > echo (int)"2M"; // "2M"Λ਺஋΁Ωϟετ 2 » ⚠օ͞Μ͝ଘ͡ɺ"2M" ͕ධՁͰ 2 ʹͳΔ҆ఆͷࣗಈม׵ » ͪͳΈʹɺ୹ॖه๏ΛόΠτʹม׵͢Δؔ਺͸ͳ͍ɻͳΜͰ΍… » ֤ࣗॻ͔͘ɺൿ఻ͷͨΕΛάάΓ·͠ΐ͏(෗ͬͯͳ͍͔֬ೝ΋)
  97. ࿩Λ໭ͯ͠ » ini_get()ͷ࿩Ͱͨ͠Ͷ

  98. ini_get_all() » ini_get_all([str $extension [,bool $details]]) » ݱࡏͷઃఆΛɺશ෦ΛऔಘͰ͖Δ » Ҿ਺͸(null,

    false)͕͓͢͢Ί » ฦ஋͸Ωʔͱ஋ͷ഑ྻ
  99. php > var_dump(ini_get_all()); array(233) { ["allow_url_fopen"]=> // Ωʔ໊ array(3) {

    ["global_value"]=> // άϩʔόϧͷ஋ʢʁʣ string(1) "1" ["local_value"]=> // ݱࡏͷ஋ string(1) "1" ["access"]=> // ΞΫηεϨϕϧ int(4) }
  100. null, false ࢦఆྫ php > var_dump( ini_get_all(null,false)); array(233) { ["allow_url_fopen"]=>

    string(1) "1" ["allow_url_include"]=> string(0) ""
  101. ໪࿦͜͏͢Ε͹୯ମͷ஋΋ͱΕ·͢ var_dump( ini_get_all(null, false)['display_errors'] ); string(0) "" » ⚠ͱ͜Ζ͕ɺini_getͱ͸ڍಈ͕ҟͳΔ

  102. php > var_dump(ini_get('upload_tmp_dir')); string(0) "" php > var_dump(ini_get_all(null, false)['upload_tmp_dir']); NULL

    // ಥવͷNULLʂʂ » ʮ໊લ͕ࣅͯΔ͚ͩͰɺೋͭؔ਺ͷฦ஋͕ಉ͡ͱ୭͕ݴͬͨʁʯ » ຊདྷ upload_tmp_dir ͸ɺ(php.netᐌ͘)σϑΥϧτ͕NULL » ini_getͷ΄͏͕ਖ਼͘͠(?)ͳ͍ » ܕΛҙࣝͨ͘͠ͳΓ·͢Ͷʂ
  103. ͭ·Γɺ஋͸औΕΔ͕ཁ஫ҙ » ࠓճ͸var_dumpΛ͔ͭͬͯ·͕͢ɺฦ஋͕ͳ͍ͷͰॻ͖ग़ͮ͠Β͍! » phpinfoͱಉ༷ɺob͔ͭ͑͹औΕΔ » print_rͰ͸ฦ஋ʹग़དྷΔͷʹ…

  104. ΈΜͳେ޷͖print_r͸… php > echo print_r("",1); // ͳʹ΋Ͱͳ͍ php > echo

    print_r(null,1); // ͳʹ΋Ͱͳ͍ php > echo print_r(true,1); // true͸1ʹͳΔ… 1 » ͜ͷΑ͏ʹprint_r͸ܕΛͩ͞ͳ͍ » ͠ܕͳ͍ͷͰɺผͷಓ۩͕ඞཁ
  105. ༨ஊɿ͜ͱ͋Δຖʹ͜ͷෆຬΛݴ͏ࢲ » var_dump͸ɺԿނม਺ʹΩϟϓνϟͰ͖ͳ͍ͷͩΖ͏… » ΈΜͳࢥ͏Ͱ͠ΐ…ࢥΘͳ͍ʁ » ๭ࣝऀʮob͔͓ͭ͏ΑʯࢲʮͳΜͰ΍ʂob͞ΘΓͨ͘ͳ͍͠ɺΊΜ Ͳ͍΍Ζʂʯ » ผͷࣝऀʮਂԕͳΔཧ༝͕͋ΔͷͩΖ͏ʢ࡞ͬͯΔਓʹฉ͚ʣʯࢲ

    ʮ͔ͨ͠ʹ…ʯ
  106. meanwhile in php conference 2015... » PHP࡞ऀͷϥεϜε͕͖͍ͯͨ » ʮࣃϒϥγʯͰ༗໊ͳਓ »

    ϔλͳӳޠͰ͜ͷ݅Λ௚ૌ࣭໰ » ࡞ऀʮͦΕ͸ͦ͏͍͏΋ͷͩɺobΛ͔ͭ͑!ʯࢲʮ͸͍…"ʯ » PHPʹٹ͍͸ͳ͔ͬͨ » ࢲʹ৯͍Լ͕Δӳޠྗ΋ͳ͔ͬͨ(fin…)
  107. ༨ஊऴΘΓ » var_dumpͷر๬͸௵͑·ͨ͠ͷͰɺଞͷख๏ͷ঺հ

  108. serialize() php > echo serialize(0); // i:0; php > echo

    serialize("false"); // s:5:"false"; php > echo serialize(false); // b:0; php > echo serialize(null); // N; » Ұจࣈ໨Ͱܕ͕Θ͔ͬͯศརʂ! » i:int, s:string, b:bool, N:null » օɺPHPͷγϦΞϥΠζܗࣜΛಡΉΑ͏ʹͳΓ·͢ʢΑͶʁʣ
  109. json_encode php > echo json_encode(""); // "" php > echo

    json_encode(null); // null php > echo json_encode(true); // true php > echo json_encode("true"); // "true" php > echo json_encode(1); // 1 php > echo json_encode("1"); // "1" » ܕ΋ɺͪΌΜͱΈΕ͹Θ͔Δ!
  110. ݸʑͰͳ͘ɺશ෦ͷઃఆΛݟ͍ͨ࣌͸ php > echo json_encode(ini_get_all(null,false), JSON_PRETTY_PRINT); { "allow_url_fopen": "1", "allow_url_include":

    "", "arg_separator.input": "&", » ݁ՌΛjson_encodeͰɺJSON_PRETTY_PRINT » ൺֱʹ΋ศརͰ͢ʢॏཁʣ!
  111. jsonͱdiffͰࡶʹൺֱ͢Δྫ! $ diff 56.json 7.json 26c25 < "date.timezone": "Asia\/Tokyo", ---

    > "date.timezone": "", 42c41 < "error_reporting": "-1", --- > "error_reporting": "22527", » ֤ࣗπʔϧΛద౰ʹ
  112. tips͓ΘΓ » ✅ී௨͸ json_encode() ͕Ұ൪Ͱ͸ʁ » ػցతॲཧʹ΋޲͍͍ͯΔ » ଞʹvar_export()ͳͲ΋͔ͭ͑·͢ɺ΄΅jsonʹ͍ۙ͠ݟ΍͢͞ »

    serialize() ΛਓྗͰಡΉͷʹ͸ɺ਺࣌ؒ͸ܦݧ͕͍Δ
  113. get_cfg_var » ॳظͷphp.iniͷઃఆΛऔಘͰ͖Δ » ·͋ɺ࢖Θͳ͍ » ini_get_allͷ$detail=trueͰ·͔ͳ͑Δ

  114. தٳΈ » ini_get/ini_get_allͰݱࡏͷઃఆΛ֬ೝ » ✅ܕ΍ɺ୹ॖه๏ͷةݥੑΛ͖ͪΜͱҙࣝɺ೺Ѳ͠Α͏ » ⚠ಛʹini_getͷฦ஋͕Stringͳͷ͸஫ҙͤΑ » #ini_get_allΛjson_encodeͳͲͰ੔ܗ͢ΔͱҰཡੑߴ͍͠ɺjson ͔ͩΒൺֱʹศར

  115. php.iniʹ ઃఆ͢Δ

  116. » ֬ೝͨ͠Β࣍͸ઃఆͰ͢ΑͶ » ʮ΋͏΍ͬͨͷͰ͸ʁʯʮͦͷ݅Ͱ͸ͳ͍ʯ » php.ini(ϦΞϧ)ͷઃఆ͸ʮ࣮ߦ࣌ʹมߋͰ͖Δʯ <a href="<?php ini_set('display_errors', 0);

    some_broken_func(); ini_set('display_errors', 1); ?>">ࢮ</a>
  117. ઃఆʹ͔ͭ͏ؔ਺ » ini_set() » ΄Μͱ͏ʹΑ͔ͭ͘͏ » ini_alter()ͱ͍͏Alias͕͋Δ͕ɺݟ͔͚ͨࣄ͸ͳ͍ » ini_restore() »

    ࢖ͬͨ͜ͱͳ͍
  118. ini_set » ini_set ( string $varname , string $newvalue )

    » Ωʔͱ஋Ληοτ͠·͢ » ஋͸StringͰ͢ʢ஫ҙʣ » ⚠ฦ஋͸ʮมߋલͷ஋ʯͰ͢ʢ஫ҙʣ » ⚠ࣦഊ࣌͸FALSE͕ฦΓ·͢ʢ஫ҙʣ » ⚠ઃఆͰ͖ͳ͍΋ͷ΋͋Γ·͢(ޙड़)
  119. ஋͸StringͰ͢ » ѱ͍༧ײ͔͠͠ͳ͍! » ࣮ࡍѱ͍ࣄʹɺ᠘͕͋Δ

  120. php > ini_set('mbstring.strict_detection', 'On'); php > var_dump(ini_get('mbstring.strict_detection')); string(2) "On" php

    > var_dump(mb_get_info()['strict_detection']); string(3) "Off" <-- !!?? » mbstring.strict_detectionͰ֬ೝ » boolܕͳͷͰɺphp.iniͰ͸"On"Λࢦఆ͢Δ » ͔͠͠ini_set ͸ɺ"On"Λਖ਼͘͠ड͚෇͚·ͤΜʂ!
  121. ৭ʑͳ஋Λini_setܦ༝Ͱboolʹ͍ΕΔͱ… » OnʹͳΔ » true, 1, -1 » OffʹͳΔ »

    false, "true", "false", 0, "On", "Off" ͏ʔΜ͜ͷ!
  122. ࢿྉΛΈͯΈ·͠ΐ͏ » php.iniͰ͸ true/false,on/off, yes/no, none ͱࢦఆ͢Δ http://php.net/manual/ja/configuration.file.php ; ࿦ཧ஋͸ɺ࣍ͷ͍ͣΕ͔Ͱࢦఆ͠·͢

    ; true, on, yes ; ·ͨ͸ false, off, no, none » ͔͠͠ɺ"true"Λ͍ΕΔͱɺΦϑʹͳΔ…ͷ͕… » ·͕ͪ͑ͳ͚Ε͹Ͳ͏ͱ͍͏͜ͱ͸ͳ͍!
  123. ͍ͬͯ͏͔Ͷɺ » mbstring.strict_detection͸ » Booleanͱ͔͍ͯ͋Δͷʹ » (php.netᐌ͘)σϑΥϧτ͸"0"ͳΜͩΑ » ͏͙͙͙…Booleanͱ͸…

  124. ͦ΋ͦ΋ɺini_get͢Δͱ » ʢલड़΋͠·͚ͨ͠Ͳʣ » BooleanͰɺOffͷͱ͖ʹini_get͢Δͱ""ʢۭจࣈʣ͕͔͑ͬͯ͘ ΔͷͰɺOffͳΜͯͳ͔ͬͨΜ΍…ɻʢ༗Γ·͢ʣ

  125. ଞʹ΋ҋ͕ » σϑΥϧτNULLͷmbstring.substitute_character » ini_setͰNULLΛ͍Εͯ΋""ʹͳΔΑ͒… » ʢͨͩɺ""≒NULLͰ͋Γɺࠔͬͨ͜ͱ͸ͳ͍…ʣ php > ini_set('mbstring.substitute_character',

    null); php > var_dump(ini_get_all()['mbstring.substitute_character']); string(0) ""
  126. ݸਓͷײ૝Ͱ͢ » ʢbool૬ख͸ʣ1ͱ0Λ࢖͏ͱΑ͍ » 0/1ͷࢦఆ͸php.iniͰ΋࢖͑·͢ » php.netʹ͸ॻ͍ͯແ͍͚Ͳ…ɻ » "On"ɺ”Off”ͷ͜ͱ͸Θ͢ΕΑ͏… »

    ʢݸਓͷײ૝Ͱ͢ʣ
  127. தٳΈ·ͱΊ » ini_setͰphp.iniͷઃఆΛม͑ΒΕΔ » ✅Ҿ਺͸str͕ͩɺ૬ख͕boolͷ৔߹1/0͕ແ೉ʢݸਓͷײ૝Ͱ͢ʣ » ਖ਼͍͠ਓ͸ɺphp.iniͱini_setͰ࢖͍෼͚͍ͯͩ͘͞"

  128. ΞΫηεϨϕϧ

  129. » ઌఔͷ௨Γɺphp.iniͷઃఆ͸࣮ߦ࣌΋มߋͰ͖Δ » ͨͩ͠ɺini_setͰͦͷ৔ͰมߋͰ͖ͳ͍΋ͷ΋͋Δ » ͦͷ੍ݶΛʮΞΫηεϨϕϧʯͱ͍͏ » ̐ஈ֊ʹͳ͍ͬͯΔ

  130. ΞΫηεϨϕϧ͸࢛छ » PHP_INI_ALL =>Ͳ͜Ͱ΋ઃఆՄೳɺଟ͕͘ίϨ » PHP_INI_USER =>΄΅ଘࡏ͠ͳ͍ » PHP_INI_PERDIR =>.htaccess,.user.ini,php.ini,httpd.conf(౳)

    » PHP_INI_SYSTEM =>php.iniɺhttpd.conf(౳)
  131. » PHP_INI_ALL » Ͳ͜Ͱ΋ » PHP_INI_PERDIR » .htaccessɺ.user.ini͕ར༻Ͱ͖Ε͹Մೳ » PHP_INI_SYSTEM

    » αʔόʔ؅ཧऀͷΈ͕มߋՄೳ
  132. ͳͥશ͕ͯPHP_INI_ALLͰ͸ͳ͍ͷ͔ » ϢʔβϓϩάϥϜ࣮ߦલʹඞཁͳ৘ใ » ηΩϡϦςΟతͳཧ༝ͳͲ » (Α΄Ͳͷࣄ͕ͳ͚Ε͹ɺALLͰ͢ɺ։์తͰ͢)

  133. » ॴͰɺʮΞΫηεϨϕϧʯ໊ͬͯশ͕ਖ਼͔ࣜෆ໌ʢʁʣ » Ϩϕϧ͕هࡌ͞ΕͨҎԼͷURLͳͲʹ͸ಛʹ໊শ͕ͳ͍… » http://php.net/manual/ja/configuration.changes.modes.php » ͜͜Ͱ͔ͭΘΕ͍ͯΔͷͰɺଟ෼ਖ਼໊ࣜশͩͱ͓΋͍·͢… » http://php.net/manual/ja/function.ini-get-all.php

  134. Α͋͘ΔϋϚΓɺҎԼ͸PHP_INI_ALLͰ͸ͳ͍ » PHP_INI_SYSTEM » sendmail_path » max_file_uploads » upload_tmp_dir

  135. » PHP_INI_PERDIR » max_input_varsɺmax_input_time » auto_append_fileɺauto_prepend_file » post_max_size » session.use_trans_sid

    » short_open_tag » upload_max_filesize
  136. ·ͱΊ » php.iniʹ͸̐छͷΞΫηεϨϕϧ͕͋Δ » ͨͩɺ؅ཧऀ੍͕ݶͨͦ͠͏ͳɺmemory_limitͱ͔ɺ max_execution_timeΈ͍ͨͳͷ΋ALLͰ͋Δ » ηΩϡϦςΟ౳ΑΓɺΠϯλϓϦλͳͲͷಈ࡞্ͷ౎߹͕ϝΠϯͷ۠ ෼͚ͬΆ͍ »

    ʮphp.iniͬͯݖҖ͕ͳ͘ͳ͍…ʁβϧͰ͸ʁʯ » ΋ͬͱ΋ɺͦΕΛ๷͙खஈ΋͋Δ(ޙड़)
  137. SAPIຖʹಠಛͳ php.iniͷઃఆํ๏

  138. » ͢Ͱʹड़΂ͨΑ͏ʹɺSAPIͱ͍͏΋ͷ͕͋Δ » ͦΕͧΕͰɺগ͚ͩ͠ಠࣗͷઃఆํ๏͕͋Δ » php.iniͷઃఆΛ੍ݶ͢Δํ๏͕͋Δ » ͍͔ͭ͘Λ͝঺հ

  139. CLI ྫɿ /etc/php.ini /etc/php/conf.d/*.ini

  140. CLI » /etc/php.ini౳ » ͋Δ͍͸-c /path/to/php.ini php.iniΛύεͰࢦఆ » ͋Δ͍͸/etc/php-cli.ini ͷઃஔ

    » ຊདྷͷphp.iniͷdirʹɺphp-{SAPI໊}.ini͕͋Δͱphp.iniʹ༏ ઌ͞ΕΔ
  141. CLI͸ಠಛ͕͋͞Δ » CLI͸͍͔ͭ͘ڍಈ͕ҧ͏ʢ૬ख͕TERMͳͷͰʣ » phpinfoग़ྗ͕txtϞʔυʹͳͬͨΓ » ࣮ߦ࣌ؒͳͲ֤छϦϛοτ͕֎ΕͨΓ » CLI͸खܰͰ৭ʑ֬ೝͰ͖Δ͕ɺσϑΥϧτ஋͕มΘΔͷͰɺςετ ʹ࢖͏࣌͸஫ҙ͠·͠ΐ͏

    » cli͸-d memory_limit=-1ͳͲͱCLIΦϓγϣϯͰࢦఆՄೳ
  142. apache+mod_php ྫɿ /etc/php.ini /etc/php/conf.d/*.ini /etc/apache/httpd.conf /etc/apache/conf.d/some.conf /var/www/html/.htaccess /var/www/html/abc/.htaccess

  143. apache+mod_php » /etc/php.ini౳ » ͋Δ͍͸PHPIniDir ࢦఆͰphp.iniͷ৔ॴΛࢦఆ » httpd.conf΍.htaccess » ͍͔ͭ͘௥ՃͷσΟϨΫςΟϒ͕ར༻Մೳʹ

  144. mod_phpͷ௥ՃσΟϨΫςΟϒ » php_value key value ͱStringͷઃఆ͕Մೳ » php_admin_value ಉ্͕ͩɺϢʔβ͕ઃఆ্ॻ͖Ͱ͖ͳ͘ͳΔ »

    php_flag key on ͱBoolͷઃఆ͕Մೳ » php_admin_flag ಉ্͕ͩɺϢʔβ͕ઃఆ্ॻ͖Ͱ͖ͳ͘ͳΔ
  145. mod_phpͷ௥ՃσΟϨΫςΟϒྫ php_admin_value memory_limit 128M php_admin_value max_execution_time 10 php_flag display_errors off

  146. ίϐϖ͠Α͏ͱͯ͠Α͋͘Δ᠘ » (httpd.conf΍ɺಛʹ.htaccessʹ͓͍ͯ…ʣ » ʮphp_value(౳)ೖΕͨΒΤϥʔʯ » ͦͷαʔό͸mod_phpೖͬͯͳ͍ͷͰ͸ʁ » ͦͷ؀ڥ͸mod_phpͰ͸͘ɺCGI/FastCGIͰ͸ʁ

  147. » ʮ൓ө͞Εͳ͍ͧʁʯ » mod_php͸ೖ͍ͬͯΔ͕ɺલड़ͷ௨ΓCGI/FastCGIͰPHPΛ͔ͭ ͍ͬͯΔ » ΞΫηεϨϕϧΛແࢹ͍ͯ͠Δ » ࢒೦ɺఆ਺͸࢖͑ͳ͍ͷͩʢྫ:E_NOTICEʣ »

    ࠶ىಈΛΘ͢Ε͍ͯΔ
  148. CGI ྫɿ /etc/php.ini /etc/php/conf.d/*.ini /var/web/html/.user.ini

  149. CGI » /etc/php.iniͳͲ » .user.ini » .htaccessͷphp_value౳ͷ୅༻ɺه๏͸php.iniͱಉ͡ » ಉҰDir͔ΒDocRoot·Ͱͷؒʹઃஔ͢Δ »

    Ұ౓ಡΉͱσϑΥϧτͰ̑෼Ωϟογϡ͞Ε·͢ » publicʹஔ͘=࿙Ӯʹ஫ҙʂʢ.htaccessΈ͍ͨʹ403ʹ͠Α͏ʣ
  150. nginx+FastCGI ྫɿ /etc/php.ini /etc/php/conf.d/*.ini /etc/php/php-fpm.conf /etc/php/php-fpm.d/*.conf /etc/nginx/nginx.conf /var/web/html/.user.ini

  151. nginx+FastCGI » جຊCGIͱಉ༷ʢphp.iniɺ.user.iniʣ » nginxͷfast_cgi_paramͰ௥ՃࢦఆՄೳ » fastcgi_param PHP_VALUE "memory_limit=-1; max_execute_time=-1";

    » ಉ༷ʹɺPHP_ADMIN_VALUE΋͋Δ » /etc/php-fpm.conf(ϓʔϧઃఆϑΝΠϧɺ࣍ϖʔδ)
  152. ϓʔϧઃఆϑΝΠϧ php_flag[display_errors] = off php_admin_value[error_log] = /var/log/fpm-php.www.log php_admin_flag[log_errors] = on

    php_admin_value[memory_limit] = 32M » ·ͨ৽ͨͳه๏͕͏·Εͨ…!
  153. ʮ͋ΕɺWindowsͷ࿩͸ʁʯ » ͸͍ » GUIͳͲͰɺઃఆͨ͠ΓɺϨδετϦ(!)ͳͲ͕ɺ͋Γ·͢ɻ » ϨδετϦ͸͔ͭΘͳ͍Ͱɺphp.ini΍.user.iniΛ͔͍ͭ·͠ΐ͏ » ࠷ۙͷIIS͸ී௨FastCGIΒ͍͠ͷͰɺFastCGIͷࢿྉΛΈ͍ͯͩ͘͞

  154. ·ͱΊ » php.iniͷޙʹɺ֤SAPIʹΑΔઃఆ͕Ͱ͖Δ » ֤SAPIͰઃఆϑΝΠϧ΍ख๏͕͕ͪ͏ » ઃఆͰ͖ΔΩʔ໊ͳͲ͸ಉ͡ » ⚠ͨͩ͠ɺphpͷఆ਺͸ར༻Ͱ͖ͳ͍ʢ஫ҙʣ »

    ✅php_admin_*ͰɺϢʔβʔʹ੍໿Λͭ͘ΕΔ
  155. όʔδϣϯؒࠩҟ

  156. 㙽ʹ֯มΘΔɺϚΠφʔͰมΘΔ » PHP͸ϚΠφʔόʔδϣϯΞοϓʢx.y.zͷyʣͰ΋ͬ͘͢͝มΘΔ » ʢsemverͰ͸ͳ͍ͷͰɺҙຯ͕ҧ͏͕ʣ » z͘Β͍ͳΒɺେମେৎ෉…େମͶ… » ͭ·ΓͲ͕͜มΘͬͯ΋৴༻ͮ͠Β͍ͬͯ͜ͱͩͳɺΨοϋοϋ »

    ʢΨοϋοϋͰ͸ͳ͍ʣ
  157. ͍ʹ͑͠ͷ࣮ߦ؀ڥ » PHP5.1ɺ5.2ɺ5.3͋ͨΓ͸7ͱ͸૬౰͕ͪͬͨΓ͢Δ » ʮͦͷ࣌୅Λੜ͖͖ͯͨԶͨͪʯʹ͸Α͍͚Ͳɺͦ͏Ͱ΋ͳ͍ਓ͸ͭ Βͦ͏ » php.netͷ෇࿥ΛΑΈ·͠ΐ͏ » ࣮ػͰ৺ߦ͘·Ͱࢼ͠·͠ΐ͏

    » ςετ༻ʹݹ͍phpΛϏϧυ͢Δͷʹ͔ͭΕͨΒɺ ݹ͍LinuxσΟετϦΛDL͢ΔͱΑ͍Ͱ͢(ਅإ)
  158. σϑΥϧτมߋΛ֬ೝ͢Δ » php.netʹ͸ʮ෇࿥ʯͱ͍͏ʮ͜Εͦ͜ຊฤʯΈ͍ͨͳ৘ใ͕͋Δ » ͦ͜ΛͪΌΜͱνΣοΫ͢Ε͹ɺେମେৎ෉ » php -n -aͰiniΛϩʔυͤͣʹini_get_allΛಈ͔ͯ͠ɺࠩΛݟΔ »

    ͕ࠩ͋ͬͨΒɺద੾ʹຒΊΔiniΛॻ͘ // ϦϞʔτͱखݩΛ֬ೝ͢Δ༗໊ςΫɻ͕ͩɺલड़ͨ͠Α͏ʹ҆қʹcliͰ֬ೝ͢Δͷ͸͓קΊ͠ͳ͍ɻ diff <(php -r 'phpinfo();') <(~/.phpenv/versions/5.6.9/bin/php -r 'phpinfo();') diff <(php -r 'phpinfo();') <(ssh remote 'php -r "phpinfo();"') diff <(ssh remote1 'php -r "phpinfo();"') <(ssh remote2 'php -r "phpinfo();"')
  159. ্͕Γଓ͚Δόʔδϣϯɺେม » ࡢࠓ͸PHPͰ΋ΨϯΨϯόʔδϣϯΛ্͍͛ͯ͘ελΠϧ » όʔδϣϯ্͛Δલʹςετ͠·͠ΐ͏Ͷʙ » php΋ɺphpenvͱ͔Ͱෳ਺όʔδϣϯ؅ཧ͠΍͘͢ͳΓ·͔ͨ͠Β » ʢೖΕ΍͍͢ͱ͸ݴ͍ͬͯͳ͍ʣ »

    σΟετϦͷඪ४ɺಛʹRH΍CentOS͸ͷΜͼΓͯ͠ΔͷͰɺΏΔ; Θ೿͸ͦΕͰ… » ʢver͸্͕Βͳ͍͚Ͳɺ͋Δఔ౓ύον͸߱ͬͯ͘ΔͷͰ…ʣ
  160. tips ୔ࢁͷphp.iniΛ๊͑ͨԶͨͪ͸Ͳ͏͢Ε͹ » ຖճphp.iniΛΤσΟλͰ͍͡Δͷ͸େมͳͷͰ… » php.ini͸͞ΘΒͣɺඞཁͳઃఆΛ͔͍ͨiniΛconf.dʹίϐʔ͠ɺ্ ॻ͖͢Δͱָ » ࢲ͸ɺखݩͷphpenv૬ख͸πʔϧΛ͔͍ͯͲ͏ʹ͔ͯ͠·͢ »

    https://github.com/uzulla/setmyphpini.php
  161. tips Ͱ΋ɺmod_php͸Ͳ͏͢Ε͹͍͍ͷΑ » php-build΍phpbrew͕͋Δݱ୅Ͱ΋ɺmod_php͸Ұखؒ » ͪΌΜͱapacheͰ֬ೝ͢Δ͔͠ͳ͍… » ࢲ͸apacheΛbuiltin serverΈ͍ͨʹαοͱཱͯΔπʔϧΛॻ͍ͯɺ ͦΕͰ΍ͬͯ·͢

    » https://github.com/uzulla/apachehere » ʢlibphpX.soͭ͘Δͷ͸ɺґવͱͯ͠μϧ͍ʣ
  162. ·͋ɺΧοίΠΠձࣾ͸ » CIͱ͔ΛͪΌΜͱ͘ΜͰ΍ͬͯΔΜ͡ΌΖʁ » ࣮ࡍɺαʔόʔΛࣗ༝ʹͰ͖ΔͳΒɺΑͦ͞͏ » ಥવαʔόʔͷftpΞΧ΢ϯτ͕ϝʔϧ͞Εͯ͘ΔΑ͏ͳɺ໺ྑͷ PHPer͸ͦ͏΋͍͔ͳͯͭ͘Β͍ʢ۪ஒʣ » ͕Μ͹Ζ͏…!

  163. ͪΐͬͱٳܜ ࣭໰͍͟͝·͔͢ʁ

  164. » ͱ͍͏͜ͱͰɺphp.iniͱͦͷ༇շͳ஥ؒୡͷ͓࿩Ͱͨ͠ » άάΔͱͰͯ͘Δ͠ɺphp.netʹ͍͍ͩͨͷͬͯ·͢ʢ౰વ͕ͩʣ » ✅ʮͦͷߦͰͷphp.ini(ϦΞϧ)͔͠৴༻͢Δͳɺඞͣ֬ೝͤΑʯ » ✅ʮSAPIͰઃఆख๏͕มΘΔʯ » ݴ͍͍ͨࣄ͸͜ͷೋߦͰ͢

  165. ͔͜͜Βઌ͸ » php.iniͰઃఆͰ͖Δ֤߲໨ʹ͍ͭͯͷ͓࿩… » ʮͭ·Γ͜͜·Ͱ͸جૅ஌ࣝͩͬͨΜͩΑʂʂʂʯΩ » ΩΩΩ ʮͳɺͳΜͩͬͯʔ͈́ʯ » ʮPHPΉ͔ͣ͠ਿ಺ʁʯʮͨ͠ֈʯ

  166. ͓඼ॻ͖ ϑΝΠϧΞοϓϩʔυɺmbstringɺηογϣϯɺassertɺdbɺcurlɺη ΩϡϦςΟɺϝʔϧɺ೔෇ɺΤϥʔͱϩάपΓɺϦιʔε੍ݶ

  167. ΤϥʔͱϩάपΓ

  168. ·ͣݴ͍͍ͨͷ͸ » άάͬͯग़ͯ͘Δʮ͜͏΍ͬͨΒΤϥʔ͕͖͑·ͨ͠ʂʯ » ͷ8ׂ͘Β͍͸ʮΤϥʔ͕Έ͑ͳ͘ͳͬͨʯ͚ͩͰ͋Δ » !μϝઈରʂʂʂʂ

  169. log_errors = On ; ͦ΋ͦ΋ΤϥʔϩάΛऔΔ͔ error_reporting = E_ALL & ~E_DEPRECATED

    & ~E_STRICT display_errors = Off ; ը໘ʹΤϥʔΛग़͔͢ display_startup_errors = Off ; PHPͷىಈγʔέϯεʹ͓͍ͯൃੜͨ͠ΤϥʔΛը໘ʹग़͔͢ log_errors_max_len = 1024 ; Τϥʔϩάͷ࠷௕ʢ੾Γࣺͯ error_log = ; ग़ྗઌɺলུ࣌SAPI΁ html_errors = On ; SAPI΁ग़ྗ࣌ɺΤϥʔจࣈྻΛhtmlԽ͢Δ͔
  170. » phpͷΤϥʔ͸͔ΘΓͭͭ͋Δ » php<=5.6 ྫ֎ͱΤϥʔ͕ผ » php>=7 ྫ֎ͱΤϥʔ͕ʮࣅͯΔʯ » Errorʢ಺෦తʹ͸ྫ֎ͳͷ͕ͩɺϢʔβʔ͸࡞Εͳ͍ʣ

    » Exceptionʢྫ֎ˍϢʔβʔྫ֎ʣ » ྫ֎΋Ωϟον͖͠Εͳ͚Ε͹ΤϥʔͱͳΓɺͦΕ͸ϩάʹग़Δ
  171. » ʢphp7Ҏલ͸ɺΤϥʔ͕ThrowableͷൽΛඃ͍ͬͯͳ͍͚ͩͰɺ php.iniʹ͓͚Δѻ͍ํͱͯ͠͸ͦ͜·Ͱ͔ΘΓ·ͤΜʣ

  172. Τϥʔʹ͸छྨ͕͋Δ » 16ݸ͋Δʢଟ͗͢ͳ͍ʁʣ » NOTICE΋ΤϥʔͰ͢ » E_NOTICE,E_ERROR,E_DEPRECATEDͳͲ » http://php.net/manual/ja/errorfunc.constants.php

  173. » error_reporting ʹεΠονࢦఆ͢Δ » දݱ͸਺஋͕ͩɺఆ਺ͷϏοτԋࢉͰࢦఆͰ͖Δ » PHPer͕།ҰϏοτԋࢉΛ͢Δ৔Ͱ͢ʢʁʣ » ྫ E_ALL

    & ~E_DEPRECATED & ~E_STRICT » = 22527 ɺ֮͑ΒΕΔ͔ʂ(ͳͷͰbitԋࢉ) » શ෦ͷΤϥʔ͔Βɺඇਪ঑ΤϥʔͱɺStrictΤϥʔΛൈ͍ͯΔ » ఆ਺ͳͷͰ*.ini΍ini_setҎ֎Ͱ͸͜ͷه๏͸͔ͭ͑ͳ͍ » ʮԿ΋ߟ͑ͣɺ-1 ʹ͓͚ͯ͠͹Φοέʔʯʢݸਓͷײ૝Ͱ͢ʣ
  174. » ͍ͬͯ͏͔ɺ-1 Ҏ֎ʹઃఆ͢Δਓ͸ɺΘ͔͍ͬͯΔͷ͔ͳ͍ͷ͔ » ࠷ॳʹ͔͍͚ͨͲɺݟ͑ͳͯ͘͠Δ͚ͩͰ͸ʁ » E_DEPRECATED͸ɺݱ৔ʹΑͬͯ͸ʮΘ͔Δʙ࢓ํͳ͍ΑͶʙʯ » E_NOTICEΛάϩʔόϧʹམͱ͢ਓ͸ָ؍తͰɺਓੜָͦ͠͏() »

    Θ͔ͬͯ΍ͬͯΔͳΒ͍͍ͱ͓΋͍·͢ » ʮPHP͸੍ࣗ৺͕΋ͱΊΒΕΔݴޠʯ
  175. » log_errors_max_len » ΨϯΨϯμϯϓ͢Δਓ͸ͷ͹͠·͠ΐ͏ » display_errorsɺdisplay_startup_errors » ։ൃ࣌͹͔Γ͸Onͷ΄͏͕͸͔ͲΔࣄ͸ଟ͍Ͱ͢ » PHP͸ࠣࡉͳΤϥʔ͸ɺͦͷ··͢͢Μ͡Ό͏ͷͰɺdisplay͠ͳ

    ͍ͱΤϥʔϩάݟͳ͍͔͗Γແݴɻ » ʮΤϥʔ͸ΤϥʔʂNoticeͰ΋ͱ·ͬͯ΄͍͠ʂʯ » ʢࢭΊΔςΫ΋͋Γ·͢ʣ
  176. » error_log » ະࢦఆ࣌͸SAPIͷΤϥʔϩά΁ɺࢦఆ͢Δͱ޷͖ͳϑΝΠϧ΍ SYSLOGʹΤϥʔΛग़ͤ·͢ɻ » ApacheͷΤϥʔϩά͸๲େ͗ͯ͢ݟͮΒ͍ͱ͔ɺਂԕͳཧ༝ͰΤ ϥʔϩά͕ཌ೔ʹͳΒͳ͍ͱݟΕͳ͍ɺ౳ͷ৔߹ʹศར() » ॻ͖ࠐΊͳ͍৔߹ɺSAPIͷϩάʹϑΥʔϧόοΫ͞Ε·͢

    » ͏͔ͬΓ ini_set('error_log', 'php.log');ͱ͔΍ͬͯɺެ։ σΟϨΫτϦʹग़ྗ͠ͳ͍Α͏ʹؾΛ෇͚͍ͯͩ͘͞Ͷɺϑϧύε ࢦఆʹͳΔΑ͏ʹॻ͜͏ʂ
  177. » ⚠error_log͸ɺphp.iniͰࢦఆ͠ͳ͍΄͏͕͍͍ » ⚠Builtin server΍CLIͰը໘ʹΤϥʔͰͯ͜ͳ͘ͳΓ·͢(᠘) » SAPIଆͷphp_value౳Ͱઃఆ͢Δͷ͕ྑ͍Ͱ͠ΐ͏ » (͋Δ͍͸ɺہॴini_set͕Α͍͔ͱ) php

    > echo ini_get("error_log"); /tmp/php_errors.log php > echo $a; // ະఆٛม਺Λ৮͍ͬͯΔͷͰɺΤϥʔ͕ͰΔ͸͕ͣͩग़ͳ͍ php > ^D $ tail /tmp/php_errors.log [XXXX] PHP Notice: Undefined variable: a in php shell code on line 1
  178. » ϩάϩʔςʔγϣϯͱ͔ɺແ͍ɻ // init.dͰɺ؀ڥม਺ࢦఆͰɺޙ͸࠶ىಈͰ…ʂʁ export D_OF_WEEK=`date +%w` rm -f /path/to/php_errorlog.$D_OF_WEEK

    // php.ini error_log = php_errorlog.${D_OF_WEEK} - ʢδϣʔΫͰ͢ʣ - ૉ௚ʹlogrotateઃఆͯ͠࠶ىಈͨ͠΄͏͕ປ͕ߴ͍Ͱ͢ - ύΠϓͰ͖ͳ͍ͷͰɺ rotatelogsͱ͔͸࢖͑͵
  179. ·ͱΊ

  180. -1

  181. » error_reporting = -1 ͕࠷ڧ! » ʢલड़ͷ௨Γ੔਺ͳͷͰʣ֬ೝ͠΍͍͢͠ » ʮ͔͠͠ݱ࣮ੈք͸ਏ͍ۤ͘͠"ʯ »

    E_NOTICE͕མͱͯ͋ͬͨ͠ΒɺղΓ΍͍͢ةݥϑϥά » <s>ෆՄආͳίʔυ͸ɺͦ͜Ͱ͚ͩerror_reportingΛม͑ͨΓ@Λ ͚ͭΑ͏ɺ΍ͬͺΓPHP͸ศར</s>
  182. ೔෇

  183. date.timezone ·ΘΓ date.timezone = "Asia/Tokyo" ;date.default_latitude = 31.7667 ;date.default_longitude =

    35.2333 ;date.sunrise_zenith = 90.583333 ;date.sunset_zenith = 90.583333
  184. date.timezone » ✅㙽ʹ֯ઃఆ͠Α͏ » "Asia/Tokyo" » ઃఆ͠ͳ͍ͱɺօେ޷͖strtotime౳ͰWarn͕ग़Δ » …ͷ͸PHP5.6·Ͱɺ7͔ΒUTC͕σϑΥϧτʹͳͬͨ »

    ⚠Ή͠Ζ᠘ʹͳͬͨͷͰ͸ʁ
  185. date.timezoneͷมભ… » date.timezone͸WarnΛແࢹ͢Ε͹ɺUTC(υΩϡϝϯτͰ͸GMT) » աڈɺTZ ؀ڥม਺ΛಡΜͰ͍͕ͨɺ5.4͔Βࢀর͠ͳ͘ͳͬͨ » ᐌ͘ʮλΠϜκʔϯͷ൑ఆ࣌ʹɺOS͔ΒಘΒΕΔ৘ใʹཔΒͳ͍Α͏ ʹͳΓ·ͨ͠ɻ ਪଌʹجͮ͘λΠϜκʔϯ͸৴པͰ͖ͳ͍͔ΒͰ͢ʯ

    » TZ͸͔֬ʹ͘͢͝ॏཁͩΑͶʂͰ΋ͦΕͳΒඞਢͷ··ͰΑ͔ͬͨͷ Ͱ͸…
  186. ༨ஊɿṖͷҢ౓ܦ౓ ;date.default_latitude = 31.7667 ;date.default_longitude = 35.2333 ;date.sunrise_zenith = 90.583333

    ;date.sunset_zenith = 90.583333 » ʮdate_sunrise() ͱ date_sunset() ͰͷΈ࢖༻͞Ε·͢ɻʯ » ͳΜͱద੾ʹઃఆ͢Δ͜ͱͰ೔ͷग़ͱ೔ͷೖΓΛܭࢉͰ͖·͢ʂ » php.iniʹ࣋ͭඞཁ͕͋ΔͷͩΖ͏͔…ਂԕͳΔཧ༝͕͋Γͦ͏ʂ
  187. mbstring ౳

  188. ৭ʑ͋Δ͚Ͳɺେ఍͜ΕͰΑ͍✅ default_charset = "UTF-8" ; Content-Type ͷσϑΥϧτ internal_encoding = "UTF-8"

    [mbstring] mbstring.language = Japanese mbstring.internal_encoding = "UTF-8" mbstring.strict_detection = On
  189. ༨ஊ(ʁ)ʮdefault_charsetͱ͸Ұମ…ʯ ; Use of this INI entry is deprecated, use

    global internal_encoding instead. ; internal/script encoding. ; Some encoding cannot work as internal encoding. (e.g. SJIS, BIG5, ISO-2022-*) ; If empty, default_charset or internal_encoding or iconv.internal_encoding is used. ; The precedence is: default_charset < internal_encoding < iconv.internal_encoding ;mbstring.internal_encoding = » ʮmbstring.internal_encodingͱ͔࣌୅஗Εɺ ࣌୅͸default_charsetҰՕॴͰ͓̺!!!ʯ » ࢲʮ΁ʔͦ͏ͳΜͩʯ
  190. » ʮʢdefault_charset͸ʣ mbstring.internal_encoding ͕ະઃఆ ͷ৔߹ͷσϑΥϧτͱͯ͠΋༻͍ΒΕ·͢ʯ » ΁ʔɺ͍͢͝ɺָͰ͍͍Ͷʂ » ͕ʂ࢒೦ʂ »

    SJIS-win͸ɺೖΕͯ΋൓ө͞Εͳ͍ʂʢίϝϯτʹ΋ॻ͍ͯ͋Δʣ » eucJP-win΋μϝͬΆ͍ʂ » UTF-8ͳΒɺͦ΋ͦ΋σϑΥϧτ΍Ζ͕͍ » ʮ…·ɺੲͳ͕Βʹઃఆ͠·͢Θɺ৴༻Ұ൪ʯ
  191. ͦ΋ͦ΋… » ʮσϑΥϧτ஋ʯͱ͍͏͜ͱ͸ɺ » ࣮ߦ࣌ʹdefault_charsetΛมߋͯ͠΋ɺ mbstring.internal_encodingͳͲʹ΋൓ө͞ΕΔΘ͚Ͱ͸ͳ͛͞ » ʢphp.iniΛಈతʹ͍͡ΔࡍʹൺֱతΑ͋͘ΔλΠϓͷ᠘Ͱ͢ʣ » ͜ͷΑ͏ʹɺPHPʹ͸͠͹͠͹มͳظ଴Λ͍͔ͩͤΒΕɺཪ੾ΒΕΔ

    ͜ͱ͕ྑ͋͘Γ·͢ɻ » ͱ͍͏͜ͱͰ༨ஊऴΘΓ
  192. ௥ՃͰ… » mbstring.substitute_character » จࣈྻͷΤϯίʔσΟϯάΛม׵ͨ͠ࡍʹɺม׵Ͱ͖ͳ͔ͬͨจࣈ Λʮήλ(ˤ)ʯ౳ͷಛఆจࣈʹஔ׵͢Δ͜ͱͰɺม׵࿙Ε౳ΛΘ͔ Γ΍͘͢Ͱ͖Δɻ » SJIS,EUC,JISڞଘ࣌୅ͷҨ෺ײ͋Δ »

    UTF-8ͷ࣌୅͸΋͏͍Βͳ͍ͷͰ͸ » ʢͱɺࢥ͍͍͚ͨͲ·ͩ·ͩcp932Λ࢖͏ࣄ͸͋ΔͶ…ʣ
  193. ҎԼ͸ةݥͳͷͰར༻͠ͳ͍͜ͱ! ;mbstring.http_input = ;mbstring.http_output = ;mbstring.encoding_translation = Off ;mbstring.func_overload =

    0 ;mbstring.http_output_conv_mimetype= » ؒҧͬͯ΋ʮศརʂʯͱࢥͬͯ͸͍͚ͳ͍
  194. ·ͱΊ » ✅σϑΥϧτ͸UTF-8ʹͳ͚ͬͨͲɺ֮ࣗͷҝʹࢦఆ͠·͠ΐ͏ɻ » ࣗಈม׵ܥɺؔ਺Φʔόʔϩʔυ͸μϝઈର » ίϝϯτ΍php.netͱ࣮ػͷ৯͍ҧ͍͸ɺૉ௚ʹ࣮ػ༏ઌ͠·͠ΐ͏ » ଞʹ΋ɺίϝϯτʹ͋Δ http://php.net/internal-encoding

    ͳͲͷURL͕404ͩͬͨΓ͢ΔͷͰ͢ » ʮphp.net࠷ߴʂʯͱ͔͍͍·͕͢ɺͦΜͳ΋ΜͳͷͰ͢
  195. Ϧιʔε੍ݶ

  196. Ϧιʔε੍ݶ » PHPer͕ॳΊͯάάΔࣄʹͳΔͷ͕͜͜Β΁ΜͰ͸ » max_execution_time = 30 » memory_limit =

    128M » ʢ࣮ࡍ͸ɺ΋ͬͱ΋ͬͱ΁Βͯ͠΋Α͍ʣ
  197. ҆શห » PHP͸ͲΜͳʹΞϗͳίʔυΛ͔͍ͯ΋ɺ͜͜Β΁ΜΛҋӢʹ޿͛ͳ ͚Ε͹ʢൺֱతʣ҆શͳͷͰ͢ » ʮPHP͸ΏΔ;ΘίʔυΛࣻ͢!ʯ » ʢ৚݅ࣜΛ͍ͭ΋ϊϦͰॻ͍ͯɺແݶϧʔϓ͢Δͷݟ͔ͯΒ௚͢λ Πϓͷਓͱ͔ʣ »

    ʢ2GB͘Β͍͋ΔϩάϑΝΠϧͷઌ಄1ߦΛͩͨ͢Ίʹɺશ෦Λ file_get_contentsͨ͠Γ͢Δਓͱ͔ʣ
  198. צҧ͍͞Ε͕ͪͳࣄ » max_execition_time͸CPU࣌ؒҎ֎ɺಛʹI/O࣌ؒ͸ϊʔΧ΢ϯτ ͳͷͰ஫ҙ » ʮʢ࣌ܭΛݟͯʣ͋ͱ10ඵͰڧ੍ऴྃʯͰ͸ͳ͍ɻ » ⚠ͨͱ͑͹DBϚλʔͳߴෛՙͰ͸શવऴྃ͠ͳ͍ » ී௨ͷ΢ΣϒΞϓϦͰԿඵ΋CPU࣌ؒ৯͏ͳΜͯ͋Γ͑ͳ͍

    » ʢצҧ͍ͯ͠ɺApache+mod_phpͰΨϯΨϯϓϩηε਺Λ্͛Δɺ ِεέʔϧΞοϓපʹؕΔ=>ѱԽ͕Ճ଎ʣ
  199. » ʢͦΕΑΓ΋લʹɺϒϥ΢β΍ NAT ͷ TCPηογϣϯ͕੾ΕͨΓʣ » ʢࣅͨΑ͏ͳʮΧ΢ϯτͷ࢓ํΛޡղʯ͸ηογϣϯपΓͳͲʹ΋ଟ ͍ʣ

  200. ʮPHP͸ΏΔ;ΘίʔυΛࣻ͢ʯ͕… » ʮԿ΋ߟ͑ͣʹศརͩͱ͔͍͍ͭͭɺ memory_limit = 1024M ͱ MaxClients 512 ͱ͔ίϐϖͰઃఆ͢Δͷ͸ΏΔ͞Μ!ʯ

    » ʮPHP͸੍ࣗ৺͕΋ͱΊΒΕΔݴޠʯ
  201. » memory_limitͱɺfpmͳΒϓϩηε਺΋΄Ͳ΄Ͳʹ͠Α͏ » ʢfpmͷpm.max_children) » ʮ΄Ͳ΄Ͳͱ͸ʁʯʮଟͯ͘΋ίΞ਺ͷ10ഒ͑ͯͨ͜ΒɺҰ౓ݕ ূͯ͠΋Α͍ͷͰ͸ʯ(ݸਓͷײ૝Ͱ͢) » ʮmod_php͸ʁʯʮલஈʹnginxஔ͘ͱΑ͍ͷͰ͸()ʯ »

    ࣗ৴͕ͳ͍ʁisuconͬͯ΍ͭͷաڈ໰ͰͨΊͯ͠ΈΔͱ͍͍Αʂ! ԾʹΘ͔ͣʹεϧʔϓοτ্͕ͬͯ΋ɺϝϞϦރׇͰͷswap΍OOM Killerͷڪාͱ͸௼Γ߹Θͳ͍Α
  202. ελοΫ·ΘΓ » pcre.backtrack_limit=100000 » pcre.recursion_limit=100000 » ෳࡶͳਖ਼نදݱɺ͋Δ͍͸σΧΠσʔλΛॲཧ͢Δͱ͜Εʹ͔͔Δ͜ ͱ͕͋Γ·͢ » Կ͔ҟৗͳ͜ͱΛ΍͍ͬͯͳ͍ʁ

    » ͔ͨ͠ͳ͘େ͖͘͠·͠ΐ͏
  203. ϑΝΠϧΞοϓϩʔυ

  204. file_uploads = On upload_tmp_dir = upload_max_filesize = 2M max_file_uploads =

    20 post_max_size = 8M
  205. » PHP͸ϑΝΠϧΞοϓϩʔυΛͲͷ؀ڥͰ΋ͪΌΜͱѻ͑Δɺ ͛͑͢ʂʂ » ʢ౰ͨΓલʹฉ͑͜Δ͚Ͳɺ݁ߏ໘౗ͳΜ΍Ͱ…ʢ࿝֐ʣ)

  206. » upload_max_filesize͸΄Ͳ΄Ͳʹ » ϑΝΠϧαΠζ͕σΧΠͱ߈ܸʹ΋ͳΓ͏Δ » ࠷ۙ͸ճઢ଎͍͠ɺDiskͷখ͍͞ΠϯελϯεͩͱϠϥΕΔ » post_max_sizeͷมߋΛ๨Ε͕ͪ » post_max_size

    > upload_max_filesize » ʢෳ਺Ξοϓϩʔυ਺΋ߟྀ͠·͠ΐ͏ʣ
  207. » 2GBҎ্ͷΞοϓϩʔυΛѻ͏৔߹͸… » ʮҟৗʁେৎ෉ʁʯʮҎ্Ͱ͢ɺେৎ෉Ͱ͢ʯ » 64bit؀ڥʹ͠·͠ΐ͏ » php>=5.6ʹ͠·͠ΐ͏ » nginx/apacheͷઃఆʢ੍ݶʣ΋֬ೝ͠·͠ΐ͏

    ʢඇৗʹΑ͋͘ΔϋϚϦॴʣ » ܦ࿏ʹ͋ΔϦόʔεϓϩΩγ΋
  208. » ʮͳΜ͔memory_limitʹ౰ͨͬͨʂ;΍ͦ͏ʂ!ʯ » ڊେϑΝΠϧΛม਺ʹϩʔυͯ͠͸μϝʢ౰ͨΓલʣ » file_get_contentsΛ࢖͏ͳ » fread౳Λ͔͍ͭͬͯͩ͘͞ » GeneratorΛ͔͍ͭͬͯͩ͘͞

    » Stream WrapperΛ͍ͭͬͯͩ͘͘͞
  209. » upload_tmp_dir » লུ࣌ɺsystemͷtmpΛ͔͍ͭ·͢ » ؀ڥ΍ΞϓϦ಺༰ʹΑͬͯ͸ɺ҆શͳॴʹม͑Α͏

  210. ·ͱΊ » খ͍͞ϑΝΠϧαΠζͳΒ؆୯ʂPHP࠷ߴʂ » େ͖͍ϑΝΠϧαΠζͩͱ᠘͕୔ࢁʂͦΕͰ΋PHP࠷ߴʂ

  211. ηΩϡϦςΟؔ࿈

  212. » PHPࣗମ͸σϑΥϧτͰ΋ͦΕͳΓʹେৎ෉ » 12ԯͷαΠτ()͕શ෦΍ΒΕͨΓ͸ͯ͠ͳ͍ » ʮΘΓͱʯͶ…HTTPOXYͱ͔͚͋ͬͨͲ » ༗໊ͳOSS͕Ϡό͍! » ʮEOLͳόʔδϣϯͷPHP͸͋͛ͯ͜ʂʯʢϙδγϣϯτʔΫͰ͢ʣ

  213. » max_input_time » ʮεΫϦϓτ͕ POSTɺGET ͳͲͷೖྗΛ ύʔε͢Δ࠷େͷ࣌ؒΛɺ ඵ୯ҐͰࢦఆ͠·͢ɻ ͜Ε͸ɺαʔόʔଆͰ PHP

    ͕ىಈ͔ͯ͠Βε ΫϦϓτͷ࣮ߦΛ։࢝͢Δ·Ͱͷ࣌ؒͰ͢ɻʯ » Α͘Θ͔ΒΜͶʁਖ਼௚Զ΋Α͘Θ͔ΒΜ » େ఍͜Ε͸΋ͬͱ΁Βͤ·͢ » ʮ͜ΕηΩϡϦςΟͳͷʁʯʮ͏ʔΜ…͍ΕΔॴ͕…ʯ
  214. » max_input_nesting_level = 64 » PHP͸hoge[hage]Έ͍ͨͳύϥϝλ͕ࣗಈతʹ഑ྻͱͯ͠ѻ͑Δɺ ͦͷ࠷େਂ͞Ͱ͋Δɻ » σϑΥϧτͷ64͸ɺͭ·Γ64࣍ݩม਺·ͰڐՄ »

    ͦΜͳʹڪΖ͍͠ϓϩάϥϜ͕͋ΔͷͩΖ͏͔…! ͱೲಘͤ͞Δύϫʔ͕PHPʹ͸͋Δ » ਫ਼ʑ5ͱ͔Ͱ͸ʁ
  215. » max_input_vars = 1000 » POST΍GETͷΫΤϦύϥϝλͷ࠷େ਺ » 1000Λଟ͍ͱΈΔ͔গͳ͍ͱΈΔ͔ɺਓʹΑ༷ͬͯʑͰ͠ΐ͏ɺͲ ͏Ͱ͔͢ʁ »

    1000ͰͨΓͳ͍͜ͱ͸͋Δʢਅإʣ » ओʹDoSରࡦ͕ϕʔεʢϋογϡίϦδϣϯ߈ܸͱ͔ʣ » ௒͑ΔͱʁWARN͕Ͱͯɺ੾ΓࣺͯΒΕͯɺ࣮ߦ͸ਐߦ͢Δʢ஫ҙʣ
  216. ͜ͷ͋ͨΓɺߜ͍ͬͯ͘ͷ͸ਖ਼͍͠ͷ ͕ͩ » ߈ܸͷୈҰ೾໨͘Β͍·Ͱ͸΍Βͳͯ͘΋͍͍ΜͰ͸ » ✅PHPͰͷKISSͱ͸ɺͰ͖Δ͜ͱͳΒσϑΥϧτઃఆͰ͔ͭ͏͜ͱ Ͱ͋Δʢཁग़యʣ » ͔͠͠ɺ͍͔ͭରԠ͢ΔͨΊʹ஌͓͖ͬͯ·͠ΐ͏

  217. » open_basedir = /var/www/html:/tmp » phpίʔυ্͔Β͸ࢦఆ͞Εͨpathͷ֎ΛಡΈॻ͖Ͱ͖ͳ͍Α͏ʹ » ʮ҆શͦ͏ͩʂ͜Ε͸PHPքͷSELinux͔ʂ!ʯ » ʢͭ·Γɺ͙͢ʹΦϑʹ͞Ε·͢ʣ

    » ʢ͔͠΋ɺPHP_INI_ALLͰ͢ʣ » ෳ਺ࢦఆ࣌͸PathΛ:Ͱͭͳ͙͕ɺWinͷ৔߹͸;Ͱͭͳ͙ » Ұจࣈͷ୅ΘΓʹɺ௕͍PATH_SEPARATORఆ਺Λ͔ͭ͑͹ղܾ
  218. » allow_url_fopen = On » $html = file_get_contents('https://example.com/'); » ΛڐՄ͢Δ͔

    » ڐՄ͠·͠ΐ͏! » ʢ͜Ε͕Ͱ͖ͳ͔ͬͨΒͳͥPHPΛ͔͍ͭͬͯΔͷ͔ٙ໰Λ๊͍ͯ͠ ·͏…ʣ
  219. » allow_url_include = Off » require ('http://example.com/super_lib.php'); » ΛڐՄ͢Δ͔ɻ »

    ʮϠόͳ͍ʁ!ʯʮωοτ͔ΒίʔυDLͱ͔Ҿ͘Θ"ʯ » curl https://hoge/installer.sh | bash ͬͯ΍ͬͨ͜ͱ͕ͳ͍ਓ͸ͦ͏ݴͬͯ΋ྑ͍ » Ͱ΋·͊ɺແ͍Θʔ
  220. » sql.safe_mode = Off » ʮ໊લ͔Βͯͭ͠Αͦ͏ʂ!ʯ » ͔͠͠ʮPHPͰ͍͏ͱ͜Ζͷsafe_modeʯͱ͍͏ҙຯͰ͋Γɺผʹ safeͰ͸ͳ͍" »

    ʮΦϯʹ͢ΔͱɺσϑΥϧτ஋͕ࢦఆ͞Ε͍ͯΔσʔλϕʔε઀ଓؔ ਺͸ɺ Ҿ਺Ͱࢦఆ͞Εͨ஋ΑΓ΋σϑΥϧτ஋Λ༏ઌͯ͠࢖༻͠· ͢ɻ ʯ » ʢphpʹ͓͚Δʮsafe modeʯͱ͸ɺϢʔβʔͷϙΧʢ΍ѱҙʣΛଟ গअຐ͢Δͱ͍͏ҙຯͰ͢ʣ
  221. » expose_php = On » X-Powered-By: PHP/7.0.9 ͳͲΛӅ͢ » ·͋Φϑʹ͍ͨ͠ਓ͸Φϑʹͨ͠΄͏͕ΑΖ͍͠

    » ʢϔομʔʹPHP͔͍ͬͯͯ͋Δͱ͏Ε͍͔͠Β൱ఆͮ͠Β͍ʣ » ෭࡞༻ͱͯ͠ɺʮΠʔελʔΤοάʯ͕͔ͭ͑ͳ͘ͳΓ·͢
  222. None
  223. » ·͋ɺPHP5.5͔Β͸΋ͱ΋ͱແ͍ » ʢ͔͠͠ɺapacheͰ͸͏͚͘͝ͲɺbuiltinserverͰ͸͏͔͝ΜͷΑ Ͷ͜Εɻʣ

  224. disable_functions = disable_classes = » ؔ਺΍ΫϥεΛېࢭͰ͖Δ » ຊ೔ࢄʑ͔ͭͬͨini_setͳͲΛࡴͤΔ » ʮͳ͓ɺecho͸ؔ਺Ͱ͸ͳ͍ͷͰېࢭͰ͖ͳ͍ɺ͜Ε౾ͳʯ

  225. ϝʔϧ

  226. ࠷ॳʹॻ͍͓͕ͯ͘… » ϝʔϧؔ࿈ͷઃఆΛ͍͡Δ৔߹ɺmail()ͱ͔ɺmb_send_mail()ͱ͔ ͷڍಈΛม͍͑ͨͷͩΖ͏ͱ͓΋͏ » ⚠΍Ί͓ͯ͜͏⚠ » ✅ྑ͍ϝʔϧૹ৴ϥΠϒϥϦΛ͔͓ͭ͏ʂ » ͢ΔͱͩͶɺઃఆͷ΄ͱΜͲ͕ཁΒͳ͘ͳΔΜͩͳ…

    » ʮͦ΋ͦ΋ɺएऀ͸Mailgunͱ͔SESͱ͔͔ͭ͏Μ͡ΌΖʁʯ
  227. » sendmail_path = "/usr/sbin/sendmail -t -i" » ͍͍ͤͥɺsendmailͷPath͕มΘͬͯΔ৔߹ʹมߋ » ௨ৗɺ͜ͷpathʹsendmail͕͋ΔͷͰมߋ͢Δඞཁ͸ͳ͍

  228. tips: sendmail_pathʹࣗ࡞ͷϓϩάϥϜΛࢦఆ͢Δͱศར #!/usr/bin/perl my $out_file_name = '/tmp/mailout'; open(my $fh, ">>",

    $out_file_name) or die $!; while(<STDIN>){ print $fh $_; }
  229. » ʮPerl΍Μ͚ʂʯ » ʮ͹Ε͔ͨʯ

  230. » (ଞʹ΋߲໨͸͋Δ͚Ͳɺຊ౰ʹ͍ͬͯ͡ྑ͍͜ͱͳ͍ͷͰলུ)

  231. ηογϣϯ

  232. » PHP࠷ߴศརػೳͷҰͭɺηογϣϯ » ʮPHP͸ϑϨʔϜϫʔΫͩʂʯ » ݴޠʢʁʣʹηογϣϯػೳ͕͋ΔͷͰɺຊ౰ʹָ » ͜Ε͚ͩͰ60෼࿩ͤΔ(?)

  233. PHPҎ֎ͷݴޠͷํʑ΁ɺPHPͷηογϣϯ͸… » ద੾ʹൃ൪͞ΕͨηογϣϯID͚͕ͩCookieʹอଘɺૹ৴͞Εɺ » ΞΫηε࣌ʹ͸ɺࣗಈతʹSIDʹώϞ෇͍ͨΩʔΛݩʹɺ » (ࣗ࡞΋Ͱ͖Δ)ηογϣϯετϨʔδϋϯυϥ͔ΒσʔλΛͻ͖ͩ ͠ɺ$_SESSION΁σγϦΞϥΠζɻ » ऴྃ࣌ʹ͸ɺࣗಈతʹٯํ޲Ͱ$_SESSIONΛγϦΞϥΠζͯ͠อଘɻ

    » ηογϣϯIDͷ࠶ׂΓ౰ͯ΋ܰʑʂ » …ͱɺ͍ͬͨ΋ͷ͕ݴޠʢ؀ڥʣͰ༻ҙ͞Ε͓ͯΓ·͢ɻ
  234. » PHPͷηογϣϯػೳ͸େ͖͘ೋͭͷػೳʹΘ͚ΒΕ·͢ » ηογϣϯIDͷ؅ཧ » ετϨʔδ

  235. » ηογϣϯID(SID)ͷ؅ཧ » ԿͰ΍ΓऔΓ͢Δ͔ » URL » Cookie » IDͷੜ੒ɺ؅ཧ

    » γʔυ » ௕͞ʢڧ౓ʣ » ηΩϡϦςΟڧԽͷઃఆ
  236. » ΋͸΍ςϯϓϨɺSessionͰCookieΛ࢖͏֤छઃఆ session.use_cookies = 1 ; SIDΛCookie͔ΒಡΊΔΑ͏ʹ session.use_only_cookies = 1

    ; ͍·Ͳ͖URLʹຒΊࠐ·ͳ͍ͷͰɺOn session.name = PHPSESSID ; CookieΩʔ໊ session.cookie_secure = 1 ; httpsͰͷΈηογϣϯͷCookieΛ΍ΓͱΓ session.cookie_domain = ; ະࢦఆͰݱࡏͷυϝΠϯʹͳΔͷͰɺ௨ৗෆཁ session.cookie_path = / ; ηογϣϯΫοΩʔͷPath session.cookie_httponly = 1 ; SIDΛJS͔Βݟ͑ͳ͘͢Δ session.use_strict_mode = 1 ; SIDΛ஫ೖͤ͞ͳ͍
  237. session.cookie_lifetime = 0 ; ηογϣϯΫοΩʔͷExpireΛࢦఆ » 0͸ϒϥ΢βΛด͡Δ·Ͱ༗ޮ » ʢݱ୅Ͱʮϒϥ΢βΛด͡Δʯͱ͸…ʁʣ »

    sessionΛҡ࣋͢Δʹ͸ɺద੾ʹઃఆ͢Δ » ʮࠓ͔ΒNඵʯ » ผ్ɺετϨʔδͷlifetimeͷઃఆ΋͍Δʢޙड़ʣ » ʮ௕͔͋͘͞Δ΂͠ʯͷٞ࿦͸͜͜Ͱ͸͠ͳ͍
  238. » Ψϥέʔ࣌୅͸ऴΘͬͨɺURLʹSIDؔ࿈͸Onʹ͠ͳ͍ » ηΩϡϦςΟతʹɺϩΫͳ͜ͱʹͳΓ·ͤΜ session.use_trans_sid = 0 ; URLͷηογϣϯIDΛड͚ೖΕΔ͔ʁ session.referer_check

    = ; ͦͷ৔߹ɺड͚ೖΕΔυϝΠϯΛݻఆ
  239. ηογϣϯIDͷੜ੒खஈؔ܎ » ηΩϡϦςΟʹίμϫϦ͕͋ΔͳΒม͑ͯ΋Α͍ͷͰ͸ » มߋ͢Δͱɺݱࡏͷશηογϣϯ͕ফ͑·͢ʢ౰ͨΓલ͕ͩ…ʣ session.hash_function = 1 ; ηογϣϯͷϥϯμϜจࣈͷ௕͞

    ; 0:md5͔1:sha1͔ࢦఆͰ͖Δɺ͚Ͳ7.1Ͱফ͑·ͨ͠ session.entropy_length = 32 ; PHP 7.1Ͱফ͑·ͨ͠ session.entropy_file = /dev/urandom ; PHP 7.1Ͱফ͑·ͨ͠
  240. ͳ͓ɺphp7.1͸͜ͷΑ͏ʹγϯϓϧʹͳͬͨ » php.iniͷσϑΥϧτͩͱޙํޓ׵ੑͷͨΊʹ26จࣈʹͳ͍ͬͯΔ ͕ɺ΋ͬͱͷ͹ͨ͠΄͏͕͍͍ͧͱ͍͏͜ͱΒ͍͠ɻ ; Shorter length than default is

    supported only for compatibility reason. ; Users should use 32 or more chars. ; Default Value: 32 ; Development Value: 26 ; Production Value: 26 session.sid_length = 26
  241. session.auto_start = 0 ; ࣗಈతʹηογϣϯΛ։࢝͢Δ͔Ͳ͏͔ » େ఍ͷίʔυͰ͸ࣗલͰsession_start()͍ͯ͠·͢ͷͰɺ session.auto_start͸ΦϑͰΑ͍Ͱ͢ » ෆཁͳ࣌͸͏͔͝ͳ͍ͷͰෛՙ΋͕͞Γ·͢

  242. session.cache_limiter = nocache ; Ωϟογϡͤ͞ͳ͍ session.cache_expire = 180 » ηογϣϯ͕͍ͭͨϨεϙϯεΛͲ͏Ωϟογϡͤ͞Δ͔

    » ͳʹ͔ͷ౎߹΍ෛՙͷࣄΛଞॴʹ͢Ε͹ɺσϑΥϧτͰେৎ෉
  243. » ηογϣϯετϨʔδʢϋϯυϥʣ » ௨ৗ͸file » memcachedͱ͔ͷ֦ுΛ͍ΕΔͱɺ૿͑Δ » KVSΈ͍ͨͳΫϥεΛ࣮૷͢Δͱɺࣗ࡞Ͱ͖Δ » ෳ਺୆ͷαʔόʹ͢ΔͳͲͰมߋ͢Δ

  244. session.save_handler = files ; σϑΥϧτͷfileετϨʔδΛ࢖͏ session.save_path = "/tmp" ; fileετϨʔδͷઃఆͰɺͲ͜ʹ৘ใΛอଘ͢Δ͔

    » session.save_pathʹ͸ηογϣϯ৘ใ͕อଘ͞ΕͨେྔͷϑΝΠϧ ͕Ͱ͖Δ » अຐͩͱ͔ɺCronͰ૟আ͞Εͳ͍Α͏ʹͱ͔ɺnfsͰڞ༗͍ͨ͠ ͱ͔(ݹ)ɺඞཁ͕͋Ε͹มߋ͢Δ » ʢύʔϛογϣϯʹ஫ҙʂʣ » ʮPHPҎ֎ͰɺηογϣϯϑΝΠϧΛࣗલͰಡΈॻ͖͢ΔʯͳͲ ͱ͍ͬͨɺڧ·ͬͨΞϓϦΛॻ͘ͳΒ͜ͷpathΛ֬ೝ͢Δ
  245. » $_SESSIONΛγϦΞϥΠζ͢ΔϋϯυϥΛࢦఆ » ʮมߋ͢Δͷʁڧ͍Ͷʙʯ session.serialize_handler = php ; $_SESSIONΛԿͰγϦΞϥΠζ͢Δ͔ ;

    ଞʹphp_serializeͳͲ͕͋Δ ;session.lazy_write = On ; 7͔Βɺߋ৽͕͋Δ৔߹ͷΈॻ͖ࠐΉࣄͰੑೳ޲্ » ղͬͯΔਓ͚͕͍ͩ͡Δ߲໨Ͱ͢
  246. » ηογϣϯͷ༗ޮظؒؔ࿈ » gc_maxlifetimeɺσϑΥϧτͷ24෼͸୹͍Α͏ͳɺ௕͍Α͏ͳ… session.gc_maxlifetime = 1440 ; ηογϣϯ༗ޮظؒɺඵ ;

    ΞΫηεຖʹgc_probability/gc_divisorͷαΠίϩΛৼΓɺ ; ֬཰తʹsessionͷGCཁٻ͕ߦΘΕΔ session.gc_probability = 1 session.gc_divisor = 1000
  247. ηογϣϯ༗ޮظؒͷܾΊํ » session.cookie_lifetimeͰɺSID(Cookie)ͷण໋Λద੾ʹ௕͘͠ ·͠ΐ͏ » session.gc_maxlifetimeͰɺετΞ͞Εͨ৘ใ͕ഁغ͞ΕΔ·Ͱͷ ظؒΛԆ͹͠·͠ΐ͏ » Ͳ͕ͬͪ੾Εͯ΋ηογϣϯʢʹอଘ͞Εͨ৘ใ͸ʣফ͑·͢ »

    ʮԿނผͳͷʁʯʮSID؅ཧͱɺετϨʔδ͸ผͷ֓೦ͳΜͰʯ
  248. ʮʢηογϣϯʣΩϨͯͳʙ͍ʯ » ετϨʔδଆͷGC͸ɺαΠίϩ೚ͤɺஸ౓ʹফ͑Δ͜ͱ͸ͳ͍ » ʮԿ෼Ͱηογϣϯ͕੾ΕΔͷ͔อূ͍ͯͩ͘͠͞ʯʮ໘౗ͳ…ʯ » ͦͷ৔߹ɺExpireΛPHPʹ೚ͤΔͳΒఘΊͯɺ$_SESSIONͷதʹ ࣌ࠁ෇͖ͷ৘ใΛ͍Ε·͠ΐ͏ ; ͳ͓ɺ͜ͷΑ͏ͳΠΧαϚαΠίϩ͸۪ߟͰ͢

    session.gc_probability = 1 session.gc_divisor = 1
  249. » ʮ͡Ό͋gc_divisorΛ૿΍͢ͱ͍ܰͷ͔ʂʁʯͬͯࢥ͏͔΋͠Ε·ͤ Μ͕ɺ͍͔ͭ͸GC͕૸ͬͯɺͦΕ͸ͦΕͰॏ͍ॲཧʹͳΓ·͢ɻ » ʢISUCONͳΒ͍͍͔΋Ͷ͆ʣ

  250. » ݬͷػೳɺupload_progress ;session.upload_progress.enabled = On ;session.upload_progress.cleanup = On ;session.upload_progress.prefix =

    "upload_progress_" ;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS" ;session.upload_progress.freq = "1%" ;session.upload_progress.min_freq = "1" » ͳΜͱʮϑΝΠϧΞοϓϩʔυͷϓϩάϨεόʔʯΛग़ͤΔ » ΞοϓϩʔυதʹผͷϦΫΤετΛඈ͹ͯ͠ɺηογϣϯΛݟΔͱɺ ਺஋͕औΕΔ » ਅ໘໨ʹ͔ͭͬͨ͜ͱ͸ͳ͍
  251. session.hash_bits_per_character » ͓ೃછΈͰ͸ͳ͍Ͱ͠ΐ͏

  252. None
  253. » ʮͳΜͱʂදʹೋճొ৔͠·͢ʂʯ » ͖ͬͱॏཁ͔ͩΒͳΜͰ͠ΐ͏ʂ » ʢ͔ͭͬͨ͜ͱͳ͍ʣ » ʮ·ͨɺPHP 7.1.0 Ͱ࡟আ͞Ε·ͨ͠ɻʯ

    » ʮ͑ʁphp.iniϑΝΠϧʹ࢒ͬͯΔΜ͚ͩͲ…ʯʢini_get͸Ͱ͖·ͤ ΜͰͨ͠ʣ » ʢ㙽ʹ֯·͋ɺͦΜͳ͔͍͋ͭͩͱ͍͏͜ͱͰ͢Ͷʣ
  254. ·ͱΊ » ηογϣϯपΓ͸7.1Ͱͪΐͪ͜ΐ͜࢓༷͕มΘΓ·ͨ͠ » σϑΥϧτͰ͔ͭͬͯΔਓʹ͸ؔ܎ͳ͍͚Ͳɺ৭ʑ֦ுͨ͠Γͯ͠Δ ڧ͍ਓ͸஫ҙ͕ඞཁ » ʮࡢ೔͙͢ʹϏϧυ͚ͨ͠Ͳɺ7.1ͱ͔͍ͭ࢓ࣄͰ࢖͑ΔΜͩΖ ͏…ʯʮ͋͞…ʯ

  255. Assert

  256. » ࣮͸ੲ͔Β͋Δ » 7͔ΒϓϦϓϩηεͰࡴͤΔΑ͏ʹͳͬͨ » ࣜධՁ͕Ͱ͖ΔΑ͏ʹͳͬͨ » ։ൃ؀ڥ͚ͩͰ࢖ΘΕΔ΋ͷͰ͢ » ͳʹ͔͜ΕͰϩδοΫΛॻ͍ͯ͸͍͚ͳ͍

    » ʮ͔͜͜Βීٴ͢Δͷ͔ͳ…ʁʯ
  257. ; -1 ίϯύΠϧ࣌ແࢹɺ0 ࣮ߦ͠ͳ͍ɺ1 ࣮ߦ͢Δ zend.assertions = -1 ;assert.exception =

    On ; fail࣌ྫ֎(ʁ)εϩʔ ; ͜ΕҎԼ͸ԼҐޓ׵ੑͷͨΊ࢒͍ͬͯΔ͕ɺ͔ͭ͏ͳͱ ;assert.active = On ;assert.warning = On ;assert.bail = Off ;assert.callback = 0 ;assert.quiet_eval = 0
  258. » εϩʔͱ͍͏͕ɺ\ErrorͷࢠͳͷͰɺ\ExceptionͰ͸Ωϟον͞Ε ͳ͍ » PHPͰ౤͛ΒΕΔྫ֎͸ɺThrowableͱ͍͏਌͔ΒɺErrorͱ ExceptionʹΘ͔Ε͓ͯΓɺաڈͷίʔυ͸ExceptionΛ਌ͱͯ͠ ͍ͨͷͰʮී௨ʯ͸ʹ͗ΓͭͿ͞Εͳ͍ͧ » 7͔Βྫ֎ͱΤϥʔ͕ͲͪΒ΋ʢجຊతʹ͸ʣʮThrowʯʹͳͬ ͨɻ

    » Ωϟον͸Ͱ͖Δ » ͨͩ͠ɺError͸ϢʔβʔΫϥεͰ௨ৗܧঝͰ͖ͳ͍
  259. curl

  260. curl.cainfo=/path/to/cacert.pem » SSL certificate problem: unable to get local issuer

    certificateΈ͍ͨͳΤϥʔ͕ग़ͨΒରԠ » ূ໌ॻ͸ݕূͯͦ͜͠ɺCURLOPT_SSL_VERIFYPEERΛfalseʹ͢Δͱ͔ μϝઈର » cacert.pem͸https://curl.haxx.se/ca/cacert.pemͳͲ͔Βೖख
  261. DB

  262. ͸͖ͬΓ͍ͬͯɺphp.iniͰ DBͱ͔ͷઃఆͳΜͯͤ͑΁Μ ͷͰলུ

  263. ·ͱΊʹ͸͍͍͖ͬͯ· ͢ʂ

  264. ୔ࢁ͋Δͧʂࠓ೔࿩ͤͳ͔ͬͨ͜ͱ » cgi.force_redirectͱ͔ͷ࿩ » urlrewriterͷ࿩ » filterͷ࿩ » realpth_cacheͱ͔ͷ࿩ »

    zend.enable_gcͷਆ࿩ » report_memleaksͷظ଴ͱઈ๬
  265. ຊτʔΫશମͷ·ͱΊ

  266. ͋͋ʂphp.ini໘౗͍͘͞ʂ » ʮphp.iniͳΜͯͳͯ͘͠͠·͑͹͍͍ʂ!ʯ » લड़΋͚ͨ͠Ͳɺͳͯ͘΋͏͖͝·͢ » ͨͩ͠ɺphpͷόʔδϣϯΞοϓͰσϑΥϧτ͸มΘΔ » ʮϚΠφʔͰେมߋ͕ೖΔࣄͰఆධͷ͋ΔPHPʯ »

    ΤϯίʔσΟϯάͷσϑΥϧτ͕UTF-8ʹ » datetime.zoneσϑΥϧτ͕UTCʹ » ʮ೺Ѳ͠ଓ͚Δ͘Β͍ͳΒɺphp.iniΛॻ͍ͨํ͕ϚγͰ͸ʯ
  267. » ʮͨΕͰ͍͍͡ΌΜ!ʯ » ·͋ɺݱ࣮ͱͯͦ͠ΕͰ΋͍͍Μ͚ͩͲɺϋϚͬͨ࣌ͭΒ͍ » ಛʹɺΑ͘Θ͔ΒΜଞਓͷPHP؀ڥ͸Α͘Θ͔ΒΜ » ͦ͏͍͏ॴ͸ʮͳΜ͔৭ʑม͑ͨΒۮવಈ͍ͨʂʯˠʮൿ఻ͷλ ϨԽʯ͓ͯ͠Γ… »

    ʮ͜Ε΋͏͍Βͳ͍Ͱ͠ΐʯʮফ͞ͳ͍Ͱ͍ͩ͘͞ʂʯ » ʮ͜ͷ.htaccess͕ஔ͚ͳ͚Ε͹ࢮʯʮͪ͜ͱΒnginxʯ » ౳ͷ໰౴͕ൃੜ
  268. » ʮphp.iniʹઃఆ͕͋Δͱ؅ཧ͕େม…!ʯͱࢥ͏ਓ΋ଟ͍ » ຊ຤స౗ͬΆ͍͚Ͳɺʮશ෦ίʔυʹຒΊࠐΈʯ » ࣮͸ɺ͜Ε͸͜ΕͰղܾࡦͰ΋͋Δ » ʢPHP_INI_SYSTEMͳͲ͸࢒Δ͕…ʣ » ࢲ΋ɺini_setΛଟ༻͢Δ

    » ͔͠͠ɺࣗ෼Ҏ֎͕৮Δ͔΋͠Εͳ͍Μͩͧ » CLIͰόονճ͢ͱ͖ʹϋϚΔͧ
  269. ʮ΍͸Γphp͸ѱ͍ݴޠʂຣࡴ͢Δʂ!"ʯ » php.ini͕ʢ΋ʁʣ΍΍ͯ͘͜͠΋ɺPHPΛݏ͍ʹͳΒͳ͍Ͱͩ͘͞ ͍པΉ » ීஈ͔Β࢖͍ͬͯΕ͹ɺ׳Ε͍͖ͯ·͢ͷͰ… » ຊ೔ͷࢿྉ͸ීஈ࢖͍ͷൣғΛ݁ߏΧόʔ͍ͯ͠ΔͷͰ…͕Μ͹ͬ ͯ… »

    ฉ͍ͯ͘Εͯ΋͍͍ͷΑʁ
  270. php.iniϚελʔʹͳΔʹ͸ » php.netΛख़ಡ͢Δʢ͕ɺ࠲ֶͰ৴༻͢Δͳʣ » php.iniΛख़ಡ͢Δʢ͕ɺ࠲ֶͰ৴༻͢Δͳʣ » ini_get_allͷ஋Λશ෦ݟ͍ͯ͘ » ࣮஍ͰϋϚ֮ͬͯ͑Δ »

    20೥͸࣋ͭphp.iniͩ͠ɺ͋ͱ10೥͸࢖ΘΕͦ͏(ʁ)
  271. ΍͍͖ͬͯ·͠ΐ͏!"

  272. ׬ ࣭໰͋Γ·͢ʁ