1--TEST-- 2Test fgetc() function : usage variations - write only modes (Bug #42036) 3--FILE-- 4<?php 5/* 6 Prototype: string fgetc ( resource $handle ); 7 Description: Gets character from file pointer 8*/ 9 10/* try fgetc on files which are opened in non readable modes 11 w, wb, wt, 12 a, ab, at, 13 x, xb, xt 14*/ 15// include the header for common test function 16include ("file.inc"); 17 18echo "*** Testing fgetc() with file opened in write only mode ***\n"; 19 20$file_modes = array("w", "wb", "wt", "a", "ab", "at", "x", "xb", "xt"); 21$filename = dirname(__FILE__)."/fgetc_variation3.tmp"; 22foreach ($file_modes as $file_mode ) { 23 echo "-- File opened in mode : $file_mode --\n"; 24 25 $file_handle = fopen($filename, $file_mode); 26 if(!$file_handle) { 27 echo "Error: failed to open file $filename!\n"; 28 exit(); 29 } 30 $data = "fgetc_variation test"; 31 fwrite($file_handle, $data); 32 33 // rewind the file pointer to beginning of the file 34 var_dump( rewind($file_handle) ); 35 var_dump( ftell($file_handle) ); 36 var_dump( feof($file_handle) ); 37 38 // read from file 39 var_dump( fgetc($file_handle) ); // expected : no chars should be read 40 var_dump( ftell($file_handle) ); // ensure that file pointer position is not changed 41 var_dump( feof($file_handle) ); // check if end of file pointer is set 42 43 // close the file 44 fclose($file_handle); 45 46 // delete the file 47 unlink($filename); 48} 49 50echo "Done\n"; 51?> 52--EXPECT-- 53*** Testing fgetc() with file opened in write only mode *** 54-- File opened in mode : w -- 55bool(true) 56int(0) 57bool(false) 58bool(false) 59int(0) 60bool(false) 61-- File opened in mode : wb -- 62bool(true) 63int(0) 64bool(false) 65bool(false) 66int(0) 67bool(false) 68-- File opened in mode : wt -- 69bool(true) 70int(0) 71bool(false) 72bool(false) 73int(0) 74bool(false) 75-- File opened in mode : a -- 76bool(true) 77int(0) 78bool(false) 79bool(false) 80int(0) 81bool(false) 82-- File opened in mode : ab -- 83bool(true) 84int(0) 85bool(false) 86bool(false) 87int(0) 88bool(false) 89-- File opened in mode : at -- 90bool(true) 91int(0) 92bool(false) 93bool(false) 94int(0) 95bool(false) 96-- File opened in mode : x -- 97bool(true) 98int(0) 99bool(false) 100bool(false) 101int(0) 102bool(false) 103-- File opened in mode : xb -- 104bool(true) 105int(0) 106bool(false) 107bool(false) 108int(0) 109bool(false) 110-- File opened in mode : xt -- 111bool(true) 112int(0) 113bool(false) 114bool(false) 115int(0) 116bool(false) 117Done 118