0

ここと同じような問題があります

私はApache2サーバーを使用しています。

extensionV2.という名前の単純な拡張機能を作成したので、拡張機能をロードしてコードで使用できます。

extension = extensionV2.so in php.ini.

私のphpファイルでその関数を使用します。

しかし、私が使用する場合

<?php

dl('extensionV2.so');
var_dump(get_loaded_modules());

?>

エラーが発生します

Fatal error: Call to undefined function dl() in /var/www/html/My.php on line 9

ノート:

私はphp 5.3を使用しています

によるとphpinfo()

Thread Safety - disabled
Safe Mode - Off
enable_dl()  = On

ターミナルで php -r を介して目的の出力を取得します。dl() が apache2handlers 経由で使用されなくなったことを認識しています... dl() 問題を回避する別のオプションはありますか?

4

1 に答える 1

1

拡張機能が PHP と互換性がある場合 (PHP 拡張機能は、スレッド セーフ、API 番号、およびコンパイラ バージョンで PHP サーバーと一致する必要があります)、拡張機能をロードするために dl() を実行する必要はありません。サーバーを再起動すると、次のように表示されます。あなたの拡張機能名(あなたの場合はextensionV2)をphpinfo()ページに追加してください。そうしないと、拡張機能の読み込みに問題が発生します。
編集-1

dl()コードで使用するための代替手段は次のとおりです。

// Try to load our extension if it's not already loaded.
if (!extension_loaded('extensionV2')) {
  if (strtolower(substr(PHP_OS, 0, 3)) === 'win') {
    if (!dl('extensionV2.dll')) return;
  } else {
    // PHP_SHLIB_SUFFIX gives 'dylib' on MacOS X but modules are 'so'.
    if (PHP_SHLIB_SUFFIX === 'dylib') {
      if (!dl('extensionV2.so')) return;
    } else {
      if (!dl('extensionV2.'.PHP_SHLIB_SUFFIX)) return;
    }
  }
}
于 2013-03-17T11:51:03.290 に答える