@@ -1847,7 +1847,9 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl
18471847 zend_accel_error (ACCEL_LOG_WARNING , "opcache cannot read from file '%s' (info)\n" , filename );
18481848 zend_file_cache_flock (fd , LOCK_UN );
18491849 close (fd );
1850- zend_file_cache_unlink (filename );
1850+ if (!ZCG (accel_directives ).file_cache_read_only ) {
1851+ zend_file_cache_unlink (filename );
1852+ }
18511853 efree (filename );
18521854 return NULL ;
18531855 }
@@ -1857,15 +1859,19 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl
18571859 zend_accel_error (ACCEL_LOG_WARNING , "opcache cannot read from file '%s' (wrong header)\n" , filename );
18581860 zend_file_cache_flock (fd , LOCK_UN );
18591861 close (fd );
1860- zend_file_cache_unlink (filename );
1862+ if (!ZCG (accel_directives ).file_cache_read_only ) {
1863+ zend_file_cache_unlink (filename );
1864+ }
18611865 efree (filename );
18621866 return NULL ;
18631867 }
18641868 if (memcmp (info .system_id , zend_system_id , 32 ) != 0 ) {
18651869 zend_accel_error (ACCEL_LOG_WARNING , "opcache cannot read from file '%s' (wrong \"system_id\")\n" , filename );
18661870 zend_file_cache_flock (fd , LOCK_UN );
18671871 close (fd );
1868- zend_file_cache_unlink (filename );
1872+ if (!ZCG (accel_directives ).file_cache_read_only ) {
1873+ zend_file_cache_unlink (filename );
1874+ }
18691875 efree (filename );
18701876 return NULL ;
18711877 }
@@ -1877,7 +1883,9 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl
18771883 zend_accel_error (ACCEL_LOG_WARNING , "opcache cannot unlock file '%s'\n" , filename );
18781884 }
18791885 close (fd );
1880- zend_file_cache_unlink (filename );
1886+ if (!ZCG (accel_directives ).file_cache_read_only ) {
1887+ zend_file_cache_unlink (filename );
1888+ }
18811889 efree (filename );
18821890 return NULL ;
18831891 }
@@ -1895,7 +1903,9 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl
18951903 zend_accel_error (ACCEL_LOG_WARNING , "opcache cannot read from file '%s' (mem)\n" , filename );
18961904 zend_file_cache_flock (fd , LOCK_UN );
18971905 close (fd );
1898- zend_file_cache_unlink (filename );
1906+ if (!ZCG (accel_directives ).file_cache_read_only ) {
1907+ zend_file_cache_unlink (filename );
1908+ }
18991909 zend_arena_release (& CG (arena ), checkpoint );
19001910 efree (filename );
19011911 return NULL ;
@@ -1909,7 +1919,9 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl
19091919 if (ZCG (accel_directives ).file_cache_consistency_checks &&
19101920 (actual_checksum = zend_adler32 (ADLER32_INIT , mem , info .mem_size + info .str_size )) != info .checksum ) {
19111921 zend_accel_error (ACCEL_LOG_WARNING , "corrupted file '%s' excepted checksum: 0x%08x actual checksum: 0x%08x\n" , filename , info .checksum , actual_checksum );
1912- zend_file_cache_unlink (filename );
1922+ if (!ZCG (accel_directives ).file_cache_read_only ) {
1923+ zend_file_cache_unlink (filename );
1924+ }
19131925 zend_arena_release (& CG (arena ), checkpoint );
19141926 efree (filename );
19151927 return NULL ;
@@ -2001,6 +2013,10 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl
20012013
20022014void zend_file_cache_invalidate (zend_string * full_path )
20032015{
2016+ if (ZCG (accel_directives ).file_cache_read_only ) {
2017+ return ;
2018+ }
2019+
20042020 char * filename ;
20052021
20062022 filename = zend_file_cache_get_bin_file_path (full_path );
0 commit comments