web-dev-qa-db-ja.com

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
Swapnil

システムには多くのモジュールがインストールされていますが。 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の変更

変更元:

&ltVirtualHost *:80> 
#ServerNameディレクティブは、サーバーが自身を識別するために使用する要求スキーム、ホスト名、およびポートを設定します
#。これは、
#リダイレクトURLを作成するときに使用されます。仮想ホストのコンテキストでは、ServerName 
#は、リクエストのHost:ヘッダーに表示する必要のあるホスト名を指定します。to 
#この仮想ホストに一致します。デフォルトの仮想ホスト(このファイル)の場合、this 
#値は最終的なホストとして使用されるため決定的ではありません。
#ただし、それ以上の仮想ホストには明示的に設定する必要があります。 
 #ServerName www.example.com 
 
 ServerAdmin webmaster @ localhost 
 DocumentRoot /var/www/html

#使用可能loglevels:trace8、...、trace1、debug、info、notice、warn、
#error、crit、alert、emerg。
#特定のログレベルを設定することも可能です
#モジュール、例
 #LogLevel info ssl:warn 
 
 ErrorLog $ {Apache_LOG_DIR} /error.log 
 CustomLog $ {Apache_LOG_DIR}/access。 log combined 
 
#conf-available /からのほとんどの設定ファイルは、
#グローバルレベルで有効または無効になり、
#含めることができます。 1つの特定の仮想ホストのみの行。たとえば、
#次の行は、このホストに対してのみCGI構成を有効にします
#「a2disconf」でグローバルに無効にした後。
#conf-available/serve-cgiを含めます-bin.conf 
 </ VirtualHos> 

変更先:

&ltVirtualHost *:80> 
#ServerNameディレクティブは、サーバーが自身を識別するために使用する要求スキーム、ホスト名、およびポートを設定します
#。これは、
#リダイレクトURLを作成するときに使用されます。仮想ホストのコンテキストでは、ServerName 
#は、リクエストのHost:ヘッダーに表示する必要のあるホスト名を指定します。to 
#この仮想ホストに一致します。デフォルトの仮想ホスト(このファイル)の場合、this 
#値は最終的なホストとして使用されるため決定的ではありません。
#ただし、それ以上の仮想ホストには明示的に設定する必要があります。 
 #ServerName www.example.com 
 
 ServerName mysite.com
 
 ServerAdmin webmaster @ localhost 
 DocumentRoot/var/www/ospos/public
 
#利用可能なログレベル:trace8、...、trace1、debug、info、notice、warn、
#error、crit、alert、emerg。
#特定の
#モジュール、例えば
 #LogLevel info ssl:warn 
 
 ErrorLog $ {Apache_LOG_DIR} /error.log 
 CustomLog $ {Apache_LOG_DIR} /access.log combined 
 
#conf-available /のほとんどの設定ファイルで、
#グローバルレベルで有効または無効
#特定の1つの仮想ホストのみの行を含めることができます。たとえば、
#次の行は、このホストに対してのみCGI構成を有効にします
#「a2disconf」でグローバルに無効にした後。
#conf-available/serve-cgiを含めます-bin.conf 
 </ VirtualHost> 

名前mysite.comは、サイトを立ち上げるために入力する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に追加したURLでサイトにアクセスできないようにする必要がありますospos.confファイル。

1
L. D. James