php7のmake testを実行したところ以下のテストがFAILになりました。
Bug #41655 (open_basedir bypass via glob()) 1/2 [ext/standard/tests/file/bug41655_1.phpt]
要するにglob関数でopen_basedirの制限を回避できてしまうということらしいです。
テスト内容(bug41655.phpt)を確認してみます。
--TEST-- Bug #41655 (open_basedir bypass via glob()) 1/2 --SKIPIF-- <?php if (substr(PHP_OS, 0, 3) == 'WIN') { die('skip not for Windows'); } ?> --CREDITS-- Dave Kelsey <d_kelsey@uk.ibm.com> --INI-- open_basedir=/tmp --FILE-- <?php $a=glob("./*.jpeg"); var_dump($a); echo "Done\n"; ?> --EXPECT-- bool(false) Done
テストでは、
$a=glob("./*.jpeg");
とカレントディレクトリ以下のjpegファイルを検索し、このglobがopen_basedirの設定によって失敗することを期待しています。
一方、
open_basedir=/tmp
と設定しています。
つまり、phpは/tmp以下のファイル以外はopenできない設定になっています。
ここで問題なのは、テストコードでカレントディレクトリ以下に対してglobを実行している点です。
つまり、/tmp以下にテストコードがある場合(php7のソースを/tmp以下に配置してしまった場合)はこのglobは必ず成功してしまい、テスト結果は失敗となってしまいます。
ということで、/tmp以下にphp7のソースコードを置いた場合このFAILは無視してよさそうです。