php-master-changes 2019-06-03

今日はテストこけの修正、引数で渡した resource が誤っていた場合の警告を TypeError にする修正、ドキュメントの更新、"--with-enchant=shared" でうまくビルドできなかった問題の修正、拡張ビルド設定のリファクタリング、zpp の L 指定削除、zpp への Z_PARAM_NUMBER の追加、disable_functions での eval 指定可能化のリバート、hexdec()、octdec()、bindec() の引数処理の修正、opcache の func_info の更新、mysql のエラーメッセージの修正、openssl で SSL_CTX_load_verify_locations() 後に エラーをクリアするようにする修正があった！

# 2019-06-03
## bukka: Fix bug [#78079](https://bugs.php.net/bug.php?id=78079) (openssl_encrypt_ccm.phpt fails with OpenSSL 1.1.1c)
- https://github.com/php/php-src/commit/2e025794745e09f7d0c72822ad0238bf6d67b2e8
- [7.2~]
- ext/openssl で、OpenSSL 1.1.1c でのテストこけの修正

## nikic: Convert fetch_resource warnings into TypeErrors
- https://github.com/php/php-src/commit/1df8175b6153865e2f12394792e3ad4c7c8e48ea
- 引数で渡した resource が誤っていた場合の警告を TypeError へ修正

## hughmcmaster: ext/skeleton: Update use of PHP_CHECK_LIBRARY
- https://github.com/php/php-src/commit/72fe2b16f68f3c17cf25d07ed3b8adb228d8893f
- ext/skelton で、PHP_CHECK_LIBRARY の使い方について追記

## hughmcmaster: ext/enchant: Pass $ENCHANT_LIBS to PHP_CHECK_LIBRARY to fix shared builds
- https://github.com/php/php-src/commit/d39638a4ac9a66ed1382e3243fa7e56746612b65
- ext/enchant で、"--with-enchant=shared" でうまくビルドできなかった問題の修正

## hughmcmaster: ext/ffi: Remove symbol check for ffi_open
- https://github.com/php/php-src/commit/7ec50c24bb8702f80e49052b923b71aa2320ff82
- ext/ffi で、ビルド時の不要なシンボルチェックを削除
- ライブラリの存在チェックは pkg-config ですでに行われている前提のため

## hughmcmaster: ext/zip: Add PHP_EVAL_LIBLINE to replace PHP_ADD_LIBRARY_WITH_PATH
- https://github.com/php/php-src/commit/310f96fd13dbe53754818f279ba63ecce1966173
- ext/zip で、PHP_EVAL_LIBLINE を PHP_ADD_LIBRARY_WITH_PATH のかわりに使うよう修正

## hughmcmaster: ext/zip: Remove un-needed symbol check for zip_open
- https://github.com/php/php-src/commit/f349d790b40e4d28baaebd5b3372e29b86249dcb
- [7.4~]
- ext/zip で、不要な zip_open のシンボル存在チェックを削除

## nikic: Remove zpp L specifier
- https://github.com/php/php-src/commit/8a0965e3d694037837a8f70f280e7d14dd7778eb
- [zpp](https://phpinternals.net/categories/zend_parameter_parsing) の L 指定を削除
- [Z_PARAM_STRICT_LONG](https://phpinternals.net/docs/z_param_strict_long) と [Z_PARAM_LONG](https://phpinternals.net/docs/z_param_long) では Z_PARAM_LONG の方が厳格な挙動だったらしい……

## nikic: Add Z_PARAM_NUMBER and use it for some functions
- https://github.com/php/php-src/commit/321fe8893537f125befa5a59f7610d7ab01a5284
- zpp に Z_PARAM_NUMBER を追加
- int or float の判定する奴
- [range()](https://www.php.net/manual/ja/function.range.php)、[abs()](https://www.php.net/manual/ja/function.abs.php)、[floor()](https://www.php.net/manual/ja/function.floor.php)、[ceil()](https://www.php.net/manual/ja/function.ceil.php) で利用

## cmb69: Fix typo
- https://github.com/php/php-src/commit/1a5fde589494947895e5317cb3514a605726ae6c
- UPGRADING.INTERNALS で、typo の修正

## cmb69: Update ZPP docs
- https://github.com/php/php-src/commit/d5280438d5589285824d4018b74617f8030a7075
- "L" の削除にあわせ ZPP のドキュメントを更新

## krakjoe: Revert "Fix bug #62397 - disable_functions does not work with eval."
- https://github.com/php/php-src/commit/ff96f25b12287de8105305b6f92c7714833066a7
- [7.4~]
- [以前に入った](https://qiita.com/sj-i/items/eb4236270b8e1d74a681#beberlei-fix-bug-62397---disable_functions-does-not-work-with-eval) disable_functions での eval 指定可能化のリバート
- [PR:4084](https://github.com/php/php-src/pull/4084) での話の流れ、実際豪快な実装ではあった
- krakjoe の人が言ってる eval の無効化は攻撃者から見たら include すればいいのでナンセンス、というのはちょっと違うと思う
- disable_functions 自体共用環境とかで使える機能を制限しようというもので、何の悪意もなくユーザ入力を eval に食わせるようなコードが動いて攻撃者からコード突っ込まれるのを防ぐような話と思うので、そういうコードが生まれ得るのは本来教育の問題なのでナンセンスな機能っちゃナンセンスな機能なんだけど、それをナンセンスと言うのもナンセンスだよねというか
- 外部公開のサンドボックスインタプリタ的な環境を想定して外部コマンド実行だけ防げばいいならそれでいいけどー、という
- PR のコメント欄で krakjoe の人と petk の人が親指立てあいながら慎重にコミュニケーションしようとしてるのが傍から見てると少し面白い（こないだギスってたので）

## krakjoe: remove reverted commit from changelog
- https://github.com/php/php-src/commit/cf9fd3735a5864595b507c115dcf7ec8a0881ee7
- [7.4~]
- NEWS、UPGRADING で↑を修正

## nikic: Expect string argument in hexdec, octdec, bindec
- https://github.com/php/php-src/commit/fd911a712424dc9c33a6a8ec415f72a645a58790
- [hexdec()](https://www.php.net/manual/ja/function.hexdec.php)、[octdec()](https://www.php.net/manual/ja/function.octdec.php)、[bindec()](https://www.php.net/manual/ja/function.bindec.php) で、zval で引数とってたのを zend_string でとるよう修正し、opcache の func_info で MAY_BE_FALSE を削除

## nikic: Finish func_info updates for ext/standard
- https://github.com/php/php-src/commit/001d43444944df0bef4e33a1876ba2818c188e11
- ext/opcache で、ext/standard 分の func_info 更新を仕上げ

## nikic: Make "MySQL server has gone away" errors more consistent
- https://github.com/php/php-src/commit/2856afc70e50b85424b2bd2d6653020679160a0b
- [7.4~]
- ext/mysqlnd と ext/mysqli で、"MySQL server has gone away" のエラー出力の扱いを修正

## nikic: Clear errors after SSL_CTX_load_verify_locations()
- https://github.com/php/php-src/commit/ac60007becc7943d1da95ec0f9f92c6a3325ec72
- [7.2~]
- ext/openssl で、SSL_CTX_load_verify_locations() 後に エラーキューをクリアするよう修正