Linux下SQLite3与PHP连接故障:Apache环境空白页排查
排查PHP页面空白问题的步骤
以下是针对你遇到的Apache下PHP PDO连接SQLite数据库页面空白的具体排查点:
开启PHP错误输出
默认PHP会关闭浏览器端的错误显示,导致连接或代码错误时页面空白。在index.php最顶部添加以下代码强制显示错误:ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);或者修改
/etc/php/php.ini文件,设置display_errors = On,执行sudo systemctl restart httpd重启Apache生效。检查SQLite数据库文件权限
Apache以http用户身份运行,必须确保db1.db和所在文件夹对该用户有读取权限:- 查看当前权限:
ls -l /srv/http/test/db1.db - 修改文件所属用户:
sudo chown http:http /srv/http/test/db1.db - 设置文件权限:
sudo chmod 644 /srv/http/test/db1.db - 确保文件夹可访问:
sudo chmod 755 /srv/http/test
- 查看当前权限:
修正PDO连接代码的错误处理
未捕获的PDO异常会直接导致页面空白,必须添加异常捕获逻辑,同时使用绝对路径指定数据库文件(避免Apache工作目录导致路径错误):<?php ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); try { // 使用绝对路径指向数据库文件 $db = new PDO('sqlite:/srv/http/test/db1.db'); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 执行查询并输出结果 $stmt = $db->query('SELECT * FROM tblone'); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo "<pre>"; print_r($row); echo "</pre>"; } } catch(PDOException $e) { echo '错误信息: ' . $e->getMessage(); } ?>验证Apache的PHP模块配置
确认Apache已加载PHP模块并允许执行PHP文件:- 检查模块是否加载:
httpd -M | grep php,若无输出则需在/etc/httpd/conf/httpd.conf中添加LoadModule php_module modules/libphp.so - 确认PHP文件处理规则:配置文件中需包含以下片段(若没有则添加):
<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> - 修改配置后重启Apache:
sudo systemctl restart httpd
- 检查模块是否加载:
查看Apache错误日志
直接查看日志定位问题:tail -f /var/log/httpd/error_log刷新空白页面后,日志会输出具体的错误信息(如权限不足、路径错误、PHP语法错误等)。
内容的提问来源于stack exchange,提问作者ramank27
相关产品推荐
相关产品推荐

