PHP扩展无法加载动态库

PHP扩展无法加载动态库

我已经安装了 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 访问您的网站。

相关内容