PHP文件不更新排查:嵌套foreach无输出及缓存相关问题
问题排查与解决思路
嘿,我仔细看了你的问题和代码,你折腾了这么多缓存清理操作,但其实页面空白的核心原因大概率是PHP语法错误,先把这个解决了再说:
1. 先补全缺失的循环闭合括号
看你贴的代码,外层的foreach ($users as $user)完全没有闭合的大括号!PHP遇到这种语法错误会直接中断脚本执行,连后面的Lorem ipsum都不会输出,自然页面一片空白。
修正后的完整代码应该是这样的:
<div id="content__admin-users"> <?php // 开启错误显示,方便后续排查(可选但推荐) ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); $query = "SELECT ID, voornaam, achternaam, email, Administrator From User"; $result = $database->prepare($query); try{ $result->execute(array()); $users = $result->fetchAll(); }catch(PDOException $e){ echo "Er is een fout opgetreden, error: $e"; } foreach ($users as $user){ foreach ($user as $detail){ print_r($detail); } } // 补上外层foreach的闭合大括号! ?> Lorem ipsum dolor sit amet consectetur adipisicing elit. Repudiandae minima repellat nulla voluptatum modi necessitatibus dolorem rerum laborum aliquam saepe quos rem, possimus placeat debitis asperiores, officiis autem odio iste. </div>
2. 开启错误显示,快速定位后续问题
默认情况下PHP不会在页面上显示错误,我在上面的代码里加了错误显示的配置,这样如果还有其他语法或运行时问题,会直接在页面上显示出来,不用再瞎猜缓存的问题。
3. 关于你怀疑的缓存问题
你已经做了几乎所有能做的缓存清理操作,但如果脚本本身因为语法错误根本没执行,缓存根本不是问题。等你把语法错误修复后,如果还是出现页面延迟更新的情况,可以做这两个检查:
- 用
phpinfo()查看opcache状态:确认opcache.enable是Off,opcache.revalidate_freq是0,确保配置真的生效了。 - 检查Apache的缓存配置:看看httpd.conf里有没有开启
mod_expires或mod_cache,可以临时注释掉相关配置测试。
4. 优化数据输出(可选)
另外,fetchAll()默认返回的是索引+关联的混合数组,你的嵌套foreach会把每个用户的字段输出两次。如果想更清晰地输出用户数据,可以指定只返回关联数组:
$users = $result->fetchAll(PDO::FETCH_ASSOC);
然后直接按字段输出,比如:
foreach ($users as $user){ echo "ID: {$user['ID']}, Naam: {$user['voornaam']} {$user['achternaam']}, Email: {$user['email']}<br>"; }
内容的提问来源于stack exchange,提问作者Nemoko
相关产品推荐
相关产品推荐

