diff --git a/ext/standard/file.c b/ext/standard/file.c index f06b672fb6736..07f272a3c0b7c 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -619,7 +619,8 @@ PHP_FUNCTION(file) Z_PARAM_RESOURCE_OR_NULL(zcontext) ZEND_PARSE_PARAMETERS_END(); - if (flags < 0 || flags > (PHP_FILE_USE_INCLUDE_PATH | PHP_FILE_IGNORE_NEW_LINES | PHP_FILE_SKIP_EMPTY_LINES | PHP_FILE_NO_DEFAULT_CONTEXT)) { + if ((flags & ~(PHP_FILE_USE_INCLUDE_PATH | PHP_FILE_IGNORE_NEW_LINES | PHP_FILE_SKIP_EMPTY_LINES | PHP_FILE_NO_DEFAULT_CONTEXT)) + != 0) { zend_argument_value_error(2, "must be a valid flag value"); RETURN_THROWS(); } diff --git a/ext/standard/file.h b/ext/standard/file.h index 2b2307cab7278..8e068111fd0bb 100644 --- a/ext/standard/file.h +++ b/ext/standard/file.h @@ -54,11 +54,11 @@ PHPAPI ssize_t php_fputcsv(php_stream *stream, zval *fields, char delimiter, cha #define META_DEF_BUFSIZE 8192 -#define PHP_FILE_USE_INCLUDE_PATH (1 << 0) -#define PHP_FILE_IGNORE_NEW_LINES (1 << 1) -#define PHP_FILE_SKIP_EMPTY_LINES (1 << 2) -#define PHP_FILE_APPEND (1 << 3) -#define PHP_FILE_NO_DEFAULT_CONTEXT (1 << 4) +#define PHP_FILE_USE_INCLUDE_PATH (1 << 3) // avoid collision with the PHP_LOCK_ constants. +#define PHP_FILE_IGNORE_NEW_LINES (1 << 4) +#define PHP_FILE_SKIP_EMPTY_LINES (1 << 5) +#define PHP_FILE_APPEND (1 << 6) +#define PHP_FILE_NO_DEFAULT_CONTEXT (1 << 7) typedef enum _php_meta_tags_token { TOK_EOF = 0, diff --git a/ext/standard/tests/file/file_error.phpt b/ext/standard/tests/file/file_error.phpt index 163943a3db396..2ea6fd58107e5 100644 --- a/ext/standard/tests/file/file_error.phpt +++ b/ext/standard/tests/file/file_error.phpt @@ -4,15 +4,21 @@ Test file() function : error conditions getMessage() . "\n"; +} + +var_dump(file("temp.tmp")); // non existing filename -var_dump( file("temp.tmp") ); // non existing filename fclose($file_handle); echo "\n--- Done ---"; + ?> --CLEAN-- --EXPECTF-- + *** Testing error conditions *** -array(0) { -} +Exception: file(): Argument #2 ($flags) must be a valid flag value -Warning: file(temp.tmp): Failed to open stream: No such file or directory in %s on line %d +Warning: file(temp.tmp): Failed to open stream: No such file or directory in %s on line 13 bool(false) --- Done --- diff --git a/ext/standard/tests/file/file_variation.phpt b/ext/standard/tests/file/file_variation.phpt index 2c46f039c2398..7c8b5d6889cbe 100644 --- a/ext/standard/tests/file/file_variation.phpt +++ b/ext/standard/tests/file/file_variation.phpt @@ -25,7 +25,7 @@ ini_set( 'include_path',$file_path.'/file_variation' ); file_put_contents( $file_path1."/file1_variation.tmp", "aaaaaaaaaaaaaaabbbbbbbbbbb111111111222222222" ); var_dump( file("file1_variation.tmp", FILE_USE_INCLUDE_PATH) ); -var_dump( file($file_path1."/file1_variation.tmp", 1) ); +var_dump( file($file_path1."/file1_variation.tmp", FILE_USE_INCLUDE_PATH) ); echo "*** Using file function to remove line containing a key string ***\n"; $file_handle = fopen($file_path."/file2_variation.tmp", "w"); diff --git a/ext/standard/tests/file/file_variation6.phpt b/ext/standard/tests/file/file_variation6.phpt index 6444c7f366757..98cd3be2a35ec 100644 --- a/ext/standard/tests/file/file_variation6.phpt +++ b/ext/standard/tests/file/file_variation6.phpt @@ -33,6 +33,13 @@ array(3) { [2]=> string(6) "Line 3" } +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value array(3) { [0]=> string(7) "Line 1 @@ -43,6 +50,13 @@ array(3) { [2]=> string(6) "Line 3" } +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value array(3) { [0]=> string(6) "Line 1" @@ -51,6 +65,13 @@ array(3) { [2]=> string(6) "Line 3" } +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value array(3) { [0]=> string(6) "Line 1" @@ -59,6 +80,13 @@ array(3) { [2]=> string(6) "Line 3" } +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value +file(): Argument #2 ($flags) must be a valid flag value array(3) { [0]=> string(7) "Line 1 @@ -69,182 +97,3 @@ array(3) { [2]=> string(6) "Line 3" } -array(3) { - [0]=> - string(7) "Line 1 -" - [1]=> - string(7) "Line 2 -" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(6) "Line 1" - [1]=> - string(6) "Line 2" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(6) "Line 1" - [1]=> - string(6) "Line 2" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(7) "Line 1 -" - [1]=> - string(7) "Line 2 -" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(7) "Line 1 -" - [1]=> - string(7) "Line 2 -" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(6) "Line 1" - [1]=> - string(6) "Line 2" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(6) "Line 1" - [1]=> - string(6) "Line 2" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(7) "Line 1 -" - [1]=> - string(7) "Line 2 -" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(7) "Line 1 -" - [1]=> - string(7) "Line 2 -" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(6) "Line 1" - [1]=> - string(6) "Line 2" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(6) "Line 1" - [1]=> - string(6) "Line 2" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(7) "Line 1 -" - [1]=> - string(7) "Line 2 -" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(7) "Line 1 -" - [1]=> - string(7) "Line 2 -" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(6) "Line 1" - [1]=> - string(6) "Line 2" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(6) "Line 1" - [1]=> - string(6) "Line 2" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(7) "Line 1 -" - [1]=> - string(7) "Line 2 -" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(7) "Line 1 -" - [1]=> - string(7) "Line 2 -" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(6) "Line 1" - [1]=> - string(6) "Line 2" - [2]=> - string(6) "Line 3" -} -array(3) { - [0]=> - string(6) "Line 1" - [1]=> - string(6) "Line 2" - [2]=> - string(6) "Line 3" -} -file(): Argument #2 ($flags) must be a valid flag value -file(): Argument #2 ($flags) must be a valid flag value -file(): Argument #2 ($flags) must be a valid flag value -file(): Argument #2 ($flags) must be a valid flag value -file(): Argument #2 ($flags) must be a valid flag value -file(): Argument #2 ($flags) must be a valid flag value -file(): Argument #2 ($flags) must be a valid flag value -file(): Argument #2 ($flags) must be a valid flag value -file(): Argument #2 ($flags) must be a valid flag value