nextcloud报错”Internal Server Error”的解决方法

在使用nextcloud过程中,突然出现”Internal Server Error”错误,提示如下:

Internal Server Error

The server encountered an internal error and was unable to complete your request.
Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.
More details can be found in the server log.

通过查找原因,最后有两种解决方法:

1.安装APCu扩展

2.清空数据表oc_filecache数据

通过方法2解决了我的问题.

 

 

 

nextcloud安装ocdwonloader启用aria2下载

环境

centos 7.7.1908

nextcloud 16.0.5

ocdownloader  1.7.3

aria2配置是重点

 

aria2安装

wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

rpm -ivh epel-release-latest-7.noarch.rpm

yum install aria2

yum -y install httpd

 

配置文件/etc/aria2/aria2.conf权限www770

内容

continue=true
max-connection-per-server=5
min-split-size=10M
#设置加密的密钥
#rpc-secret=12344321
# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
rpc-listen-port=6800
rpc-allow-origin-all=true
rpc-listen-all=true
disable-ipv6=true

bt-detach-seed-only=true

force-save=false

on-download-complete=”rm $3.aria2″
# 从会话文件中读取下载任务
input-file=/var/local/aria2c/aria2c.sess
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=/var/local/aria2c/aria2c.sess
#添加bt服务器,从https://github.com/ngosang/trackerslist获取
bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.leechers-paradise.org:6969/announce,udp://9.rarbg.to:2710/announce,udp://9.rarbg.me:2710/announce,udp://tracker.opentrackr.org:1337/announce,udp://tracker.internetwarriors.net:1337/announce

 

 

 

 

创建session文件/var/local/aria2c/aria2c.sess权限www770

创建log文件/var/log/aria2c/aria2c.log权限www770

 

临时执行命令

chown -R www:www /var/log/aria2c /var/local/aria2c
chmod 770 -R /var/log/aria2c /var/local/aria2c
sudo -u www aria2c –enable-rpc –rpc-allow-origin-all -c -D –log=/var/log/aria2c/aria2c.log –check-certificate=false –save-session=/var/local/aria2c/aria2c.sess –save-session-interval=2 –continue=true –input-file=/var/local/aria2c/aria2c.sess –rpc-save-upload-metadata=true –force-save=true –log-level=warn –rpc-listen-all=false

 

启用systemctl进行配置开机启动

创建文件/etc/systemd/system/aria2.service权限root644

内容

[Unit]
Description=Aria2 Service
After=network.target

 

[Service]
Type=simple
Group=www
User=www
ExecStart=/usr/bin/aria2c –enable-rpc –rpc-listen-all –rpc-allow-origin-all –save-session /var/local/aria2c/aria2c.sess –input-file /var/local/aria2c/aria2c.sess –conf-path=/etc/aria2/aria2.conf

PrivateTmp=false

 

[Install]
WantedBy=default.target

 

 

 

常用命令

systemctl daemon-reload

systemctl enable aria2.service

systemctl stop aria2.service

systemctl start aria2.service

systemctl status aria2.service -l

 

常用排查命令

sudo lsof -i tcp:6800

ps -ef|grep aira2c

kill -9 PID号

 

 

需要注意

aria2下载的文件权限最后通过宝塔的计划任务解决

每小时进行一次权限设置

直接在脚本里写以下内容

chown -R www:www /www/wwwroot/网站目录/data/用户文件夹/files/
wait
chmod 770 -R /www/wwwroot/网站目录/data/用户文件夹/files/
wait

 

宝塔安装Nextcloud配置事项

本文环境:centos7,nginx,php7.3

 

1.安装php扩展

fileinfo
opcache

redis

imagemagick

exif

 

2.修改php.ini文件

软件商店,php7.3设置  进入–>配置文件

大概1898行

换成如下

 

[Zend Opcache]
zend_extension=/www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/opcache.so
opcache.enable=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

 

 

3.修改php-fpm.conf文件

/www/server/php/73/etc/php-fpm.conf

最下面添加

 


env[PATH] = /usr/local/bin:/usr/bin:/bin:/usr/local/php/bin

 

 

4.修改网站配置文件

点击–>网站–>设置–>配置文件

 

     rewrite /.well-known/carddav /remote.php/dav permanent;
     rewrite /.well-known/caldav /remote.php/dav permanent;
     add_header Strict-Transport-Security max-age=15768000;

 

 

5.修改config.php文件

  1. /www/wwwroot/你的网站目录/config/config.php

 

添加缓存配置


  'memcache.local' => 'OCMemcacheRedis',
  'memcache.locking' => 'OCMemcacheRedis',
  'redis' => array( 'host' => 'localhost', 'port' => 6379, ),

 

6.修改php和nginx的上传限制

内存限制

上传文件大小限制

超时等

 

7.htpps配置

可以宝塔后台绑定宝塔实名帐号,在网站配置面板申请.

或者阿里云申请,再进行配置.

 

开启http2

配置好https后,在网站配置中修改配置文件

server
{
listen 80;
listen 443 ssl http2;

 

 

 

8.文件缩略图显示

8.1视频缩略图

安装ffmpeg扩展

wget http://download.bt.cn/install/ext/ffmpeg.sh && sh ffmpeg.sh

脚本只适用Centos6/Centos7 64位系统

 

查看安装情况

ffmpeg -version

 

在Php禁用函数中取消掉exec、system等函数

 

错误解决方法

ffmpeg: error while loading shared libraries: libavdevice.so.56:
cannot open shared object file: No such file or directory

 

先 find / -name libavdevice.so.56 得到该文件的目录地址,

然后 vim /etc/ld.so.conf 将上述目录添加到最后一行并保存退出;

加入:/usr/local/ffmpeg/lib //请修改成自己的实际目录
执行
sudo ldconfig

 

修改配置文件

添加configconfig.php
‘enabledPreviewProviders’ => array(
‘OCPreviewPNG’,
‘OCPreviewJPEG’,
‘OCPreviewGIF’,
‘OCPreviewHEIC’,
‘OCPreviewBMP’,
‘OCPreviewXBitmap’,
‘OCPreviewMP3’,
‘OCPreviewTXT’,
‘OCPreviewMarkDown’,
‘OCPreviewMovie’
),

 

 

9.所使用的数据库为MySQL但没有对4字节字符的支持。为正确处理文件名或评论中使用的4字节字符(比如emoji表情),建议开启MySQL的4字节字符支持。详细信息请阅读相关文档页面。
在文件/www/wwwroot/你的网站目录/config/config.php中添加
‘mysql.utf8mb4’ => true,

 

 

10. 一些文件没有通过完整性检查.

一些文件没有通过完整性检查。了解如何解决该问题请查看我们的 文档。(无效文件列表… / 重新扫描…)

请把网站根目录下所有不是安装压缩包内的文件删除.

例如:安装的压缩包,https证书的验证文件等

然后点击重新扫描即可

 

 

11.文件有暴露的危险,禁止浏览器列出目录即可

 

location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}
location ~ ^/(?:.|autotest|occ|issue|indie|db_|console) {
deny all;
}

 

 

 

 

 

 

 

 

 

关于遇到的问题总结

 

1.APP视频上传一直不成功

原因:开始未配置https,APP登录后走的不是安全协议.

配置好htpps后,APP再重新登录一次就可以上传视频了.

 

2.挂载外部存储

提示: “smbclient” 未安装。无法挂载 “SMB / CIFS”, “SMB / CIFS 使用 OC 登录信息”

需要安装smbclient

 

yum install libsmbclient libsmbclient-devel -y

 

宝塔中php的popen函数默认被禁用,删除掉.

 

pecl install smbclient

 

遇到警告:

WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update

 

pecl channel-update pecl.php.net

 

pecl安装smbclient扩展完成后

 

php.ini中添加这一行

extension=”smbclient.so”

 

最后重启php

 

 

nextcloud安卓同步

安卓客户端的同步默认是安装后新增的内容同步,之前的是不同步的。 不过在每个文件夹右下角的加号图标的第二个导入按钮里可以去选择批量上传的内容。 这里要注意,批量只支持文件夹内的文件全选。   建议安装F-Droid上的最新版,请设置包括不兼容的版本,可以安装最新版nextcloud安卓客户端. 正式版 https://f-droid.org/zh_Hans/packages/com.nextcloud.client 开发版 https://f-droid.org/zh_Hans/packages/com.nextcloud.android.beta   经测试,设置自动上传的文件夹,有新增图片,会进行即时识别秒传上服务器.   关于F-Droid   F-Droid 是一个 Android 平台上 FOSS(Free and Open Source Software,自由开源软件)应用程序的目录,并提供下载安装支持。使用客户端可以更轻松地浏览、安装及跟进您设备上的应用更新。   官网:https://f-droid.org/

Fatal error: Uncaught Error: Call to undefined function create_function() in /www/wwwroot/www.menglei.net/wp-content/plugins/autoptimize/classes/autoptimizeStyles.php:96 Stack trace: #0 /www/wwwroot/www.menglei.net/wp-content/plugins/autoptimize/autoptimize.php(293): autoptimizeStyles->read() #1 [internal function]: autoptimize_end_buffering() #2 /www/wwwroot/www.menglei.net/wp-includes/functions.php(5373): ob_end_flush() #3 /www/wwwroot/www.menglei.net/wp-includes/class-wp-hook.php(324): wp_ob_end_flush_all() #4 /www/wwwroot/www.menglei.net/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters() #5 /www/wwwroot/www.menglei.net/wp-includes/plugin.php(517): WP_Hook->do_action() #6 /www/wwwroot/www.menglei.net/wp-includes/load.php(1260): do_action() #7 [internal function]: shutdown_action_hook() #8 {main} thrown in /www/wwwroot/www.menglei.net/wp-content/plugins/autoptimize/classes/autoptimizeStyles.php on line 96