Ubuntu Lampp PHP8环境修改php.ini后phpinfo()配置不生效怎么办
第一步:解决php.ini修改不生效问题
- 优先排查服务重启逻辑:重启电脑不等于重启Lampp服务,修改全局php.ini后必须执行以下命令重启Lampp的Apache服务才会加载新配置:
sudo /opt/lampp/lampp restart - 确认php.ini修改规则:配置行开头的
;是注释符,修改配置时必须删掉对应行开头的;才会生效,比如原来的;upload_max_filesize = 2M要改成upload_max_filesize = 20M才会生效。 - 修复php.ini权限:不要给php.ini设置777权限,存在严重安全风险,执行以下命令改回正常权限:
sudo chmod 644 /path/to/your/php.ini(把路径替换成你phpinfo里显示的Loaded configuration file路径) - 纠正PHP8配置修改误解:PHP8没有禁止修改全局php.ini,
.user.ini是站点目录级别的自定义配置方案,适合单个站点的配置覆盖,不需要修改全局配置时使用。
第二步:解决.user.ini创建失败问题
- 创建.user.ini必须切换到你的站点根目录下执行,且需要root权限,示例操作(假设你的站点根目录为
/opt/lampp/htdocs/myproject):
Lampp的Apache默认运行用户为daemon,给.user.ini设置对应所有者才能被PHP正常读取。cd /opt/lampp/htdocs/myproject sudo touch .user.ini sudo chown daemon:daemon .user.ini - 你可以在.user.ini里写入上传相关自定义配置,示例:
配置写入后等待30秒左右自动生效,也可以重启Lampp服务立刻生效。file_uploads = On upload_max_filesize = 20M post_max_size = 25M max_file_uploads = 20
第三步:排查move_uploaded_file功能异常问题
- 先确认上传临时目录权限:查看phpinfo中
upload_tmp_dir配置项的路径,默认是/tmp权限正常,如果你自定义了路径,需要给该目录设置daemon用户的读写权限:sudo chown -R daemon:daemon /path/to/upload/tmp - 确认上传目标目录权限:你要把上传文件移动到的目标目录,必须给daemon用户读写权限:
sudo chmod -R 775 /path/to/upload/destsudo chown -R daemon:daemon /path/to/upload/dest - 添加上传错误调试:在你的上传脚本中打印上传错误码,根据错误码定位具体问题:
var_dump($_FILES['your_upload_field_name']['error']);
错误码对应含义可直接查阅PHP官方手册,常见错误如返回1代表超过upload_max_filesize限制,返回3代表文件仅部分上传,返回7代表临时目录无写入权限。
内容的提问来源于stack exchange,提问作者Glen Rose
相关产品推荐
相关产品推荐

