![PHP扩展无法加载动态库](https://linux22.com/image/1146039/PHP%E6%89%A9%E5%B1%95%E6%97%A0%E6%B3%95%E5%8A%A0%E8%BD%BD%E5%8A%A8%E6%80%81%E5%BA%93.png)
我已经安装了 LAMP。当我运行我的应用程序时,它不起作用,错误日志包含:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/php_bcmath.so' - /usr/lib/php/20151012/php_bcmath.so: cannot open shared object file: No such file or directory in Unknown on line 0
如果我启用每个扩展,则会出现错误。我使用的是 PHP 7.0。
我尝试通过这种方式启用扩展,但没有作用。
extension=/usr/lib/php/20151012/ php_bcmath.so
; ... or with a path:
extension=/usr/lib/php/20151012/ /usr/lib/php/20151012/php_bcmath.so
我在错误日志中看到了上述语句。当它说无法打开共享对象文件时:No such file or directory.
我需要更改扩展目录权限吗?或者我还能用什么方法摆脱它?我试过其他问题,但没有用。
答案1
虽然系统上安装了许多模块。Php 将使用 Apache2 配置中实际启用的模块。这样,您就可以选择使用哪一个,而不是通过安装和卸载它们,而是实际启用您当时有效的那个。
您必须启用已安装的模块才能与 Apache2 一起使用。
使用此命令:
$ sudo a2enmod [module-name]
启用模块后,请务必重新启动 Apache2 服务器:
$ sudo service apache2 restart
更新:
安装的 bcmath 模块的不同版本之间存在冲突。执行以下步骤来解决该问题。
$ sudo apt install apache2 libapache2-mod-php
$ cd /etc/apache2/sites-available/
$ sudo cp 000-default.conf ospos.conf
$ sudo a2ensite ospos.conf
$ sudo nano ospos.conf
修改新的 VirtualHost
更改自:
<虚拟主机 *:80> # ServerName 指令设置请求方案、主机名和端口 # 服务器用来标识自己。这在创建时使用 # 重定向 URL。在虚拟主机上下文中,ServerName # 指定请求的 Host: 标头中必须出现的主机名 # 匹配此虚拟主机。对于默认虚拟主机(此文件),此 # 值不是决定性的,因为无论如何它都被用作最后的手段主机。 # 但是,您必须为任何其他虚拟主机明确设置它。 #服务器名称 www.example.com ServerAdmin webmaster@localhost 文件根目录 /var/www/html # 可用的日志级别:trace8,...,trace1,debug,info,notice,warn, # 错误,严重,警报,紧急。 # 也可以为特定 # 模块,例如 #日志级别 info ssl:warn 错误日志 ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log 合并 # 对于 conf-available/ 中的大多数配置文件,它们是 # 在全球范围内启用或禁用,可以 # 只包含一个特定虚拟主机的行。例如 # 以下行仅为该主机启用 CGI 配置 # 在使用“a2disconf”全局禁用它之后。 #包括conf-available/serve-cgi-bin.conf </虚拟主机>
改成:
<虚拟主机 *:80> # ServerName 指令设置请求方案、主机名和端口 # 服务器用来标识自己。这在创建时使用 # 重定向 URL。在虚拟主机上下文中,ServerName # 指定请求的 Host: 标头中必须出现的主机名 # 匹配此虚拟主机。对于默认虚拟主机(此文件),此 # 值不是决定性的,因为无论如何它都被用作最后的手段主机。 # 但是,您必须为任何其他虚拟主机明确设置它。 #服务器名称 www.example.com 服务器名称 mysite.com ServerAdmin webmaster@localhost DocumentRoot /var/www/ospos/public # 可用的日志级别:trace8,...,trace1,debug,info,notice,warn, # 错误,严重,警报,紧急。 # 也可以为特定 # 模块,例如 #日志级别 info ssl:warn 错误日志 ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log 合并 # 对于 conf-available/ 中的大多数配置文件,它们是 # 在全球范围内启用或禁用,可以 # 只包含一个特定虚拟主机的行。例如 # 以下行仅为该主机启用 CGI 配置 # 在使用“a2disconf”全局禁用它之后。 #包括conf-available/serve-cgi-bin.conf </虚拟主机>
请注意我的站点是您输入的 URL 的名称,用于打开您的网站。添加此站点名称到你的/etc/hosts
文件中:
127.0.1.1 mysite.com
现在使用以下命令停止 apache2 服务器:
$ sudo systemctl stop apache2
运行此命令来验证端口上没有任何运行:
$ sudo lsof -i tcp:80 | egrep LISTEN
现在使用以下命令启动服务器:
$ sudo systemctl restart apache2
您将无法通过sitename
添加到ospos.conf
文件中的 URL 访问您的网站。