0
我刚升级到Ubuntu 14.04和php5.5.9,并且遇到了一些旧代码的问题。包含需要重新加载
这可能是简单的事情,但是让我疯狂!
归结,这里是问题:
- 用户提交表单
- POST值被用来生成一个php文件,用新定义的变量
- 正下方,这在代码中,包含新写入的文件以恢复新变量 - 用于测试目的。
- 但只有旧的变量被恢复。
- 刷新浏览器页面获取新变量。
我不明白为什么PHP是包括旧文件,而不是新编写的文件。
注意:该文件是由php正确编写的。但是旧文件包含在内,而不是新文件。 如果我点击浏览器刷新,则会显示新值。
变量文件是用php标签写的,因为我很久以前写了它。不知道我是否需要改变它。
filename.php
<?php
$yesorno = "no";
?>
samplefile.php
include "/filepath/filename.php";
$opencar = '<';
$closecar = '>';
$fh = fopen("/filepath/filename.php", 'w') or die("can't open file");
fwrite($fh, $opencar."?php\n");
fwrite($fh, "\$yesorno = \"yes\";\n");
fwrite($fh, "?".$closecar."\n");
fclose($fh);
include "/filepath/filename.php";
echo "result: $yesorno";
execute samplefile.php
结果是: “没有”
(刷新浏览器)的结果: “是”
在filename.php
直接看,它立即正确写入。只是没有正确调用include。
我所做的:
php.ini:
allow_url_fopen = On
allow_url_include = On
restarted apache
试图完美地老版本的php
各种形式的clearstatcache
此代码的工作。
东西明显吗?任何帮助,将不胜感激!
APC未安装 –
好吧,我明白了!我使用opcache_invalidate()作为OPcache。你让我走上正轨,谢谢! –
不客气。顺便说一句,这是一个奇怪的方式来存储变量和设置。它很容易出现竞争条件,除非你锁定文件,以便一次只能有一个进程读/写它。 –