在甲骨文云ARM VPS上使用宝塔导致php安装不完整的解决方法

106127199_p0.png

主机信息:Oracle Cloud的免费VPS(4+24,Ampere,ARM架构),解决方案点我跳转。 本次头图来自#オリジナル 動 – まごつき的插画 – pixiv

发现问题

写在前面,问题出现的总结:宝塔面板对于ARM架构的兼容还是有点问题,安装php遇到确实的包不会去安装,而是直接跳过,导致最终编译完成的php不完整,确实不要的函数,没法用。

最近在甲骨文云(Oracle Cloud)提供的免费VPS上搞了一个私有云,用的是Next Cloud的COMMUNITY PROJECTS下的Archive,搭建在了二级域名,也连通了B站录播姬,但是在搭建Next Cloud的过程中遇见了一个比较致命的问题,虽然搭建成功了,但他一直提示 nextcloud 检查服务器设置时出错,而且在初始配置的时候不显示推荐应用,也没法取消。在使用过程中也无法为文件创建含有密码的分享链接,会一直报错,同时应用商店始终加载不出来。去确认了日志,里面有很多报错,里面最多的是这两个:Exception: Call to undefined function OCA\Theming\mime_content_type() Exception: Call to undefined function OC\Http\Client\dns_get_record(),于是我上网搜,发现遇到这个问题的人也有,但是他们的解决方案我使用了但是无效。

在Nextcloud里看到很多个遇到dns_get_record没法用的,他们有提供一段测试代码,于是我运行了下,好嘛,根本用不了。

php -r “var_dump(dns_get_record(‘[apps.nextcloud.com 12](http://apps.nextcloud.com/)’, DNS_A | DNS_AAAA | DNS_CNAME));”

无法使用dns_get_record

于是我上网找了半天,发现dns_get_record这个函数是php5之后肯定自带的一个函数,那肯定是php有问题了,于是这个时候我就去试了下用rpm包安装php,参考紀錄從PHP 7.2更新至8.0 on Oracle Linux 8 – Sammy Gone WildPHP Packages for Oracle Linux完成了,这下可以用这个函数了。
可以使用函数

结果宝塔没法管理通过这种方式安装的php,于是回到了原点,我这个时候恰好搜索到有人同样也是使用甲骨文云的ARM服务器安装,遇到一样的报错,虽然他是用甲骨文云搭建的Discuz,他提出的问题被宝塔论坛的工作人员拒绝回答了,说他既然用的aapanel,那就去aapanel那里问,然后我就去了aapanel,果然找到了他的帖子),基于这个帖子我也解决了这个问题,虽然最终还是差了一点点,以下是解决方案。

解决方案

aapanel的运维给出的解决方案是使用以下代码安装libsodium-devel,不过这个方法在我这里(Oracle Linux8) 并不适用:

yum makecache

yum install libsodium-devel

如果以上代码不适用,可以尝试手动安装:

wget https://download-ib01.fedoraproject.org/pub/epel/8/Everything/aarch64/Packages/l/libsodium-devel-1.0.18-2.el8.aarch64.rpm

rpm -ivh libsodium-devel-1.0.18-2.el8.aarch64.rpm

很遗憾,对我来说两个办法都没用,但很惊喜,我发现Github上有人提供了解决方案](https://gist.github.com/davidalger/c19a53ed293291ec2e93b5227f9e0a2d)):

有两种方法, 直接复制以下内容运行 或者 创建一个.sh文件 ,然后运行:

yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm \
  && yum install -y php-cli libsodium \
  && yum install -y php-pear php-devel libsodium-devel make \
  && pecl channel-update pecl.php.net \
  && pecl install libsodium \
  && yum remove -y php-pear php-devel libsodium-devel make \
  && echo 'extension=sodium.so' > /etc/php.d/20-sodium.ini \
  && php -i | grep sodium

在这一步完成后本来应该直接可以用了,但我发现不行,于是我回去卸载了php并且重新安装,这个时候变成了宝塔说安装成功,实际上没有,并且报错了,于是我发现还缺少几个必要的包,以下是几个包的安装方法:

在以上内容安装完成后,需要再安装一些额外的包,首先是cmake:

yum install cmake  cmake3 -y

然后是这些libpng-dev libjpeg-dev libonig-dev pe6-dev libfreetype-dev等,不过他们在oracle linux上的名字不大一样,请参考以下内容安装:

dnf install libjpeg-turbo-devel
dnf install libpng-devel
dnf install libjpeg-turbo-devel
dnf install oniguruma
dnf install freetype
dnf install freetype-devel
yum install libsodium-devel  -y

如果你在上述安装过程中还是遇到了问题,可以尝试下我在宝塔面板论坛提问后运维给我回复的方法尝试安装onigurumalibsodium-devel,本质上都是安装缺失的包:

cd /tmp
wget https://vault.centos.org/centos/8/PowerTools/aarch64/os/Packages/oniguruma-devel-6.8.2-2.el8.aarch64.rpm
yum install oniguruma-devel-6.8.2-2.el8.aarch64.rpm
yum install libsodium libsodium-devel -y

全部安装完成后,回宝塔面板,卸载已安装的php,然后重新安装一遍,就解决了!如果遇到提示安装成功,但实际上没装上,记得看日志,日志里肯定会提示些什么,而其中大概率是因为又缺失了什么包。

这个时候再次运行

php -r “var_dump(dns_get_record(‘[apps.nextcloud.com 12](http://apps.nextcloud.com/)’, DNS_A | DNS_AAAA | DNS_CNAME));”

发现运行成功,可以回去重新安装NextCloud了。

大功告成!

一些其他分享

Docker录播姬

docker run -d -v 路径 -p 端口:端口 bililive/recorder run --bind "http://*:端口" --http-basic-user 用户名 --http-basic-pass 密码 /rec

更改上述代码内汉字即可一键通过Docker部署录播姬,会映射文件到你给的路径上。

NextCloud自动扫盘

在宝塔内创建计划任务,时间按需选择,代码如下:

cd NextCloud网站根目录
sudo -u www php console.php files:scan --all

只需要更改NextCloud网站根目录为你的NextCloud站点根目录即可。

大功告成!

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇