2014-05-12 41 views
0

我剛升級到Ubuntu 14.04和php5.5.9,並且遇到了一些舊代碼的問題。包含需要重新加載

這可能是簡單的事情,但是讓我瘋狂!

歸結,這裏是問題:

  1. 用戶提交表單
  2. POST值被用來生成一個php文件,用新定義的變量
  3. 正下方,這在代碼中,包含新寫入的文件以恢復新變量 - 用於測試目的。
  4. 但只有舊的變量被恢復。
  5. 刷新瀏覽器頁面獲取新變量。

我不明白爲什麼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 此代碼的工作。

東西明顯嗎?任何幫助,將不勝感激!

回答

0

您是否安裝並啓用了apc?如果是這樣,你也必須清除它的緩存。撥打apc_clear_cache()或告訴它重新編譯更新的文件

apc_compile_file("/filepath/filename.php"); 
+0

APC未安裝 –

+0

好吧,我明白了!我使用opcache_invalidate()作爲OPcache。你讓我走上正軌,謝謝! –

+0

不客氣。順便說一句,這是一個奇怪的方式來存儲變量和設置。它很容易出現競爭條件,除非你鎖定文件,以便一次只能有一個進程讀/寫它。 –