php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #76194 built-in function include_once bug with opcache ext open
Submitted: 2018-04-08 03:21 UTC Modified: 2021-07-18 04:22 UTC
From: 415401620 at qq dot com Assigned: cmb (profile)
Status: No Feedback Package: opcache
PHP Version: 7.1.16 OS: Ubuntu 16.04 LTS
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: 415401620 at qq dot com
New email:
PHP Version: OS:

 

 [2018-04-08 03:21 UTC] 415401620 at qq dot com
Description:
------------
1. My php.ini file for opcache is the default configuration.
2. Bug description:
When I use include_once to load a config.php file I found that if I delete and recreate the new config.php file.It will not load the current file and include_once return false.But,it don not load the current file correctly either.
I use this test script to show what I mean.

There are test steps:

- create a test.php in your web server root path.
- access the test.php with browser
- see the output for get_included_files,it will be :

Array ( [0] => /home/vaxilicaihouxian/codes/php/ect/eastsea.app/test.php ) 123Array ( [0] => /home/vaxilicaihouxian/codes/php/ect/eastsea.app/test.php [1] => /tmp/abc.php )

- access the test.php with browser again,the output will be:

123

- remove the /tmp/abc.php with command `rm -f /tmp/abc.php`
- access the test.php with browser finally and the output is:

Array ( [0] => /home/vaxilicaihouxian/codes/php/ect/eastsea.app/test.php [1] => /tmp/abc.php ) Array ( [0] => /home/vaxilicaihouxian/codes/php/ect/eastsea.app/test.php [1] => /tmp/abc.php )

3. Why there is the `/tmp/abc.php` in the finally output array of get_included_files() .It dose not exits but has been included with include_once.
So the second include_once will not work to include my new generating config.php.



Test script:
---------------
<?php
if(!@include_once('/tmp/abc.php')){
    print_r(get_included_files());
    swritefile('/tmp/abc.php','<?php echo 123;');
    include('/tmp/abc.php');
    print_r(get_included_files());
}

function swritefile($filename, $writetext, $openmod='w')
{
    if (@$fp = fopen($filename, $openmod)) {

        flock($fp, 2);

        fwrite($fp, $writetext);

        fclose($fp);

        return true;

    }
}

Expected result:
----------------
It should load the new generating file correctly and not ignore by the first include_once function.

Actual result:
--------------
The second include_once function ignore the config file.

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2021-07-08 13:14 UTC] cmb@php.net
-Status: Open +Status: Feedback -Assigned To: +Assigned To: cmb
 [2021-07-08 13:14 UTC] cmb@php.net
Is this still an issue with any of the actively supported PHP
versions[1]?  Also, are you sure that you don't have file_cache
enabled?

[1] <https://www.php.net/supported-versions.php>
 [2021-07-18 04:22 UTC] php-bugs at lists dot php dot net
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Re-Opened". Thank you.
 
PHP Copyright © 2001-2021 The PHP Group
All rights reserved.
Last updated: Sat Jul 24 18:01:23 2021 UTC