PHPモジュールのディレクトリを変更する


8

私はphpをコンパイルしていて、私のモジュールディレクトリを/ usr / lib64 / 20090626-ztsに設定しています

これを/ usr / lib64 / php / modulesに変更したいのですが、そのための構成オプションが見つかりません。

php.iniで変更してディレクトリを移動できますが、phpizeを実行して新しいモジュールを作成すると、/ usr / lib64 / 20090626-ztsに配置されます


これをテストする時間がありません:EXTENSION_DIR=/usr/lib64/php/modules phpize
Mark Wagner、

回答:


4

/ usr / lib64 / php / modulesをIDのあるフォルダーへのシンボリックリンクにすることをお勧めします。これにより、長期的には異なるバージョンのPHPの拡張機能が混在するのを防ぐことができます。

その上:EXTENSION_DIRPHPのconfigureを実行する前に、環境変数として設定することで設定できるはずです。何かのようなもの

 $ EXTENSION_DIR=/my/location ./configure --with-some-extension

ええ、それは理にかなっている、私は自分のモジュールが将来競合しないようにしたい。フォルダー名はそのままにしておきます。
共演2011

8

次のコマンドで現在の拡張ディレクトリを確認します。

php-config --extension-dir

あなたが設定することで、それを変更することができますextension_dirphp.ini

extension_dir="/usr/lib64/php/modules"

Apacheを再起動することを忘れないでください。


0

私の問題は同じではありませんでしたが、この質問は、最終的に非常に役立つ回答が最初に表示されたので、コメントを追加します。

ビルド済みのバイナリを使用していて、何もコンパイルしていませんが、ディレクトリ構成が原因で、PHP(Dockerコンテナで実行されているCentos7)でMySQLを使用するのに問題がありました。さまざまなpdoおよびmysqlnd.soモジュールと.iniファイルがコンテナーにインストールされましたが(標準yum install php72およびPHPインストールウィザードで指定された他のすべてのものを使用するだけです)、PHPがそれらを探していたデフォルトの場所にはありませんでした。なぜか分かりません。多分それはある種の港湾労働者のことですか?

とにかく、問題を解決するためにextension_dirディレクティブをエコーしPHP.iniPHP_INI_SCAN_DIR環境変数を設定する必要もありました。これらは私のDockerfileからの関連するコマンドです

ENV PHP_INI_SCAN_DIR=/etc/php.d/
RUN echo 'extension_dir = "/usr/lib64/php/modules"' >> /etc/opt/remi/php72/php.ini

@johanesが警告するように、これが原因で後でモジュールの競合が発生しないことを願っています。


>「デフォルトの場所にありませんでした。」ウィザードの指示に正しく従わなかったため、「シングルバージョン」を選択すると、すべてがデフォルトの場所にインストールされました。SCLは複数のバージョンを許可するために異なるパスを使用します。
レミコレット

@RemiCollet応答をありがとう。私はウィザードから単一バージョンを選択しました-私のコンテナーにはPHPの1つのバージョンしか必要ないので、これは私が望んでいることです。dockerfileに追加しなかったウィザードの指示の唯一の部分は、 `yum --enablerepo = remi-php72-test install php-xxx`とyum updateでした。ここで何か不足していますか?
charlesdeb

これらの最新のコマンドは、テストパッケージと追加の拡張機能(xxxを必要な拡張機能の名前に置き換えます)
Remi Collet

@RemiCollet申し訳ありませんが、私は少しばかげている必要があります。テストパッケージを使用すると、MySQLモジュールが.../remi/...フォルダーに入らないという私の問題が修正されると言ってい ますか?
charlesdeb

1
php- *パッケージ(単一バージョン)は標準パスを使用し、php72-php- *(SCL、複数バージョン)は/ opt / remiを使用すると言います。参照blog.remirepo.net/pages/English-FAQ#scl
レミコレット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.