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。你讓我走上正軌,謝謝! –
不客氣。順便說一句,這是一個奇怪的方式來存儲變量和設置。它很容易出現競爭條件,除非你鎖定文件,以便一次只能有一個進程讀/寫它。 –