升级后降级PHP致Nextcloud出现内部服务器错误无法解决
Nextcloud内部服务器错误排查请求
环境信息
- Nextcloud版本:
23.0.12 - 操作系统版本:
Raspbian GNU/Linux 10 (buster) armv7l Linux 5.10.103-v7l+ #1529 SMP Tue Mar 8 12:24:00 GMT 2022 armv7l GNU/Linux - Apache版本:
2.4.54 - PHP版本:
7.3
问题现象
访问Nextcloud实例时出现:
Internal Server Error
服务器遇到内部错误,无法完成您的请求。
如果该错误多次出现,请联系服务器管理员,并在报告中附上以下技术细节。
更多详情可在服务器日志中查看。
同时,/var/www/html下静态站点中的标准phpinfo.php文件也无法加载。
背景说明
原本计划升级PHP版本以更新Nextcloud到更稳定的新版本,误升级到PHP 8.2(该版本对所有稳定版Nextcloud来说过高),当时仅提示PHP版本过高,系统看似正常。随后尝试降级到PHP 7.4失败,于是决定回退到原本正常运行的基于PHP 7.3的Nextcloud 23实例,但始终无法解决当前错误。已排除Cloudflare影响(局域网访问同样报错)。
这是首次遇到该错误。
复现步骤
- 访问Nextcloud实例
已尝试的修复操作
- 确认已安装正确的PHP包(包括可选依赖包)
- 确认可以连接到Redis套接字
- 在
php.ini中添加extension=xxx(无效,已恢复)
日志及配置信息
Nextcloud管理员日志
Unavailable
Nextcloud config.php配置
<?php $CONFIG = array ( 'instanceid' => 'oca5n1b35f4a', 'passwordsalt' => 'REDACTED', 'secret' => 'REDACTED', 'trusted_domains' => array ( REDACTED ), 'datadirectory' => '/home/pi/nextcloud', 'dbtype' => 'mysql', 'version' => '23.0.12.2', 'overwriteprotocol' => 'https', 'overwrite.cli.url' => 'http://192.168.1.217', 'dbname' => 'nextcloud', 'dbhost' => 'localhost', 'dbport' => '', 'dbtableprefix' => 'oc_', 'mysql.utf8mb4' => true, 'dbuser' => 'REDACTED', 'dbpassword' => 'REDACTED', 'installed' => true, 'has_rebuilt_cache' => true, 'mail_smtpmode' => 'smtp', 'mail_sendmailmode' => 'smtp', 'maintenance' => false, 'app_install_overwrite' => array ( 0 => 'files_external_gdrive', 1 => 'breezedark', 2 => 'spreed', 3 => 'deck', 4 => 'forms', 5 => 'admin_notifications', 6 => 'pdfdraw', ), 'theme' => '', 'loglevel' => 2, 'mail_smtpsecure' => 'ssl', 'mail_from_address' => 'nexus', 'mail_domain' => 'jvadair.com', 'mail_smtphost' => 'REDACTED', 'mail_smtpport' => 'REDACTED', 'mail_smtpauth' => 1, 'mail_smtpname' => 'REDACTED', 'mail_smtppassword' => 'REDACTED', 'allow_local_remote_servers' => true, 'memcache.local' => '\\OC\\Memcache\\Redis', 'memcache.locking' => '\\OC\\Memcache\\Redis', 'redis' => array ( 'host' => 'localhost', 'port' => 6379, ), 'ncd_admin_settings' => array ( 'disallow_aria2_settings' => '1', ), );
Apache error.log最后7行
[Fri Jan 20 07:51:54.319803 2023] [mpm_prefork:notice] [pid 14954] AH00170: caught SIGWINCH, shutting down gracefully PHP Warning: PHP Startup: Unable to load dynamic library 'mysqlnd.so' (tried: /usr/lib/php/20190902/mysqlnd.so (/usr/lib/php/20190902/mysqlnd.so: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/mysqlnd.so.so (/usr/lib/php/20190902/mysqlnd.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'mysqli.so' (tried: /usr/lib/php/20190902/mysqli.so (/usr/lib/php/20190902/mysqli.so: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/mysqli.so.so (/usr/lib/php/20190902/mysqli.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql.so' (tried: /usr/lib/php/20190902/pdo_mysql.so (/usr/lib/php/20190902/pdo_mysql.so: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/pdo_mysql.so.so (/usr/lib/php/20190902/pdo_mysql.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'wddx.so' (tried: /usr/lib/php/20190902/wddx.so (/usr/lib/php/20190902/wddx.so: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/wddx.so.so (/usr/lib/php/20190902/wddx.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 [Fri Jan 20 07:51:54.764702 2023] [mpm_prefork:notice] [pid 13652] AH00163: Apache/2.4.54 (Debian) OpenSSL/1.1.1n mod_wsgi/4.6.5 Python/2.7 configured -- resuming normal operations [Fri Jan 20 07:51:54.764918 2023] [core:notice] [pid 13652] AH00094: Command line: '/usr/sbin/apache2'
Apache access.log最后10行
[Thu Jan 19 17:50:41.717151 2023] [core:notice] [pid 13831] AH00094: Command line: '/usr/sbin/apache2' [Thu Jan 19 17:52:08.432849 2023] [mpm_prefork:notice] [pid 13831] AH00170: caught SIGWINCH, shutting down gracefully PHP Warning: PHP Startup: Unable to load dynamic library 'mysqlnd.so' (tried: /usr/lib/php/20190902/mysqlnd.so (/usr/lib/php/20190902/mysqlnd.so: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/mysqlnd.so.so (/usr/lib/php/20190902/mysqlnd.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'mysqli.so' (tried: /usr/lib/php/20190902/mysqli.so (/usr/lib/php/20190902/mysqli.so: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/mysqli.so.so (/usr/lib/php/20190902/mysqli.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql.so' (tried: /usr/lib/php/20190902/pdo_mysql.so (/usr/lib/php/20190902/pdo_mysql.so: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/pdo_mysql.so.so (/usr/lib/php/20190902/pdo_mysql.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'wddx.so' (tried: /usr/lib/php/20190902/wddx.so (/usr/lib/php/20190902/wddx.so: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/wddx.so.so (/usr/lib/php/20190902/wddx.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 [Thu Jan 19 17:52:08.846023 2023] [mpm_prefork:notice] [pid 13913] AH00163: Apache/2.4.54 (Debian) OpenSSL/1.1.1n mod_wsgi/4.6.5 Python/2.7 configured -- resuming normal operations [Thu Jan 19 17:52:08.846245 2023] [core:notice] [pid 13913] AH00094: Command line: '/usr/sbin/apache2' [Thu Jan 19 17:52:35.731883 2023] [php7:error] [pid 13917] [client 172.71.254.125:57850] PHP Fatal error: Uncaught Error: Call to undefined function \xc2\xa0\xc2\xa0phpinfo() in /var/www/html/phpinfo.php:2\nStack trace:\n#0 {main}\n thrown in /var/www/html/phpinfo.php on line 2 [Thu Jan 19 17:55:44.057340 2023] [php7:error] [pid 13969] [client 162.158.103.146:9038] PHP Fatal error: Uncaught Error: Call to undefined function \xc2\xa0\xc2\xa0phpinfo() in /var/www/html/phpinfo.php:2\nStack trace:\n#0 {main}\n thrown in /var/www/html/phpinfo.php on line 2
Nextcloud日志文件状态
Unavailable - nextcloud.log未写入内容
解决建议
从日志分析,核心问题是PHP降级后环境损坏,导致扩展加载失败、基础PHP函数无法调用:
清理无效PHP扩展配置
- 打开PHP 7.3的所有配置文件(
/etc/php/7.3/apache2/php.ini、/etc/php/7.3/cli/php.ini及/etc/php/7.3/mods-available/下相关文件),删除extension=mysqlnd.so、extension=mysqli.so、extension=pdo_mysql.so、extension=wddx.so这些无效条目。 - 执行
php -v和php -m验证PHP是否能正常启动并加载核心扩展。
- 打开PHP 7.3的所有配置文件(
重装PHP 7.3及依赖
- 彻底卸载现有PHP:
sudo apt purge php7.3* libapache2-mod-php7.3 sudo apt autoremove && sudo apt autoclean - 重新安装PHP 7.3及Nextcloud必备扩展:
sudo apt install php7.3 libapache2-mod-php7.3 php7.3-mysql php7.3-curl php7.3-gd php7.3-intl php7.3-mbstring php7.3-xml php7.3-zip php7.3-redis - 启用PHP模块并重启Apache:
sudo a2enmod php7.3 sudo systemctl restart apache2
- 彻底卸载现有PHP:
验证PHP基础功能
- 重新创建
/var/www/html/phpinfo.php,内容仅为:<?php phpinfo(); ?> - 访问该文件,确认PHP正常运行。
- 重新创建
修复Nextcloud环境
- 重置Nextcloud文件权限:
sudo chown -R www-data:www-data /home/pi/nextcloud sudo find /home/pi/nextcloud -type d -exec chmod 750 {} \; sudo find /home/pi/nextcloud -type f -exec chmod 640 {} \; - 运行Nextcloud维护命令:
sudo -u www-data php /home/pi/nextcloud/occ maintenance:mode --on sudo -u www-data php /home/pi/nextcloud/occ maintenance:repair sudo -u www-data php /home/pi/nextcloud/occ maintenance:mode --off
- 重置Nextcloud文件权限:
内容的提问来源于stack exchange,提问作者jvadair
相关产品推荐
相关产品推荐

