parse_ini_file()とinclude_path
PHP5のparse_ini_file()はinclude_pathを見るの!?
今まで気付いてなかったorz
もう独自拡張したparse_ini_file()を使わなくていいのか・・。
標準関数にぼちぼち戻していこう。
念のためにソースを確認。
/* Zend/zend_ini_parser.c */ ZEND_API int zend_parse_ini_file(zend_file_handle *fh, zend_bool unbuffered_errors, zend_ini_parser_cb_t ini_parser_cb , void *arg) { ... if (zend_ini_open_file_for_scanning(fh TSRMLS_CC)==FAILURE) { return FAILURE; } ... } /* Zend/zend_ini_scanner.c */ int zend_ini_open_file_for_scanning(zend_file_handle *fh TSRMLS_DC) { if (FAILURE == zend_stream_fixup(fh TSRMLS_CC)) { return FAILURE; } ... } /* Zend/zend_stream.c */ ZEND_API int zend_stream_fixup(zend_file_handle *file_handle TSRMLS_DC) { switch (file_handle->type) { case ZEND_HANDLE_FILENAME: if (FAILURE == zend_stream_open(file_handle->filename, file_handle TSRMLS_CC)) { return FAILURE; } break; } } ... /* main/main.c */ static FILE *php_fopen_wrapper_for_zend(const char *filename, char **opened_path) { TSRMLS_FETCH(); return php_stream_open_wrapper_as_file((char *)filename, "rb", ENFORCE_SAFE_MODE|USE_PATH|IGNORE_URL_WIN|REPOR T_ERRORS|STREAM_OPEN_FOR_INCLUDE, opened_path); }
USE_PATHフラグが立っている。
もしかして全てのファイル読み取り用関数でuse_include_path用引数が無いものは、デフォルトでinclude_pathが効くようになったんだろうか?
# file_exists() はstat()を利用しているのでinclude_pathを見ない・・・この方式を取ってる限り改良はされないんだろうなぁ