7

サードパーティのPHP拡張子(.so)をUbuntu11.10のPHP5.3.6-13にインストールして、Web環境で使用しようとしています。ベンダーのドキュメントでは、dl()関数を使用してライブラリを動的にロードすることを提案しています。

サンプルコードを試してみると、PHP 5.3で関数が非推奨になっているため、dl()が使用できないことがわかりました(致命的なエラー:未定義の関数dl()の呼び出し) 。dl()しかしenable_dl、php.iniには設定ルールがあり、他の情報源enable_dl=Onによると、php.ini変数( 、、safe_mode=Offにリストされていないdisable_functions)を変更してapacheを再起動するだけでdl()を使用できるはずです。私がそれを試してみると、dl()まだ未定義です。

そこで、 PHP 5.3 SAPIの変更に関する注意事項を掘り下げて、次のことを見つけました。

dl()関数はデフォルトで無効になり、CLI、CGI、および埋め込みSAPIでのみ使用できるようになりました。

これは、WebSAPIを使用するPHP5.3+で「デフォルトで無効になっている」dl()だけでなく、実際には「PHP構成オプションを変更しても完全に利用できない」ことを意味しますか?何を微調整しても仕事ができないので、そういう風に見えます。dl()

明確にするために:php.iniを変更して拡張機能を直接ロードできるので、これは拡張機能を機能させる方法ではなくdl()、PHP5.3以降の関数とその状態に関する問題です。どのような状況でも利用できなくなった場合は、ベンダーに伝えて、ドキュメントを更新できるようにしたいと思います。しかし、それが利用可能であるはずで、私が何かを逃しているだけなら、私もそれを聞きたいです。

4

1 に答える 1

3

この関数は、PHP5.3の一部のSAPIから削除されました。 - dl()

したがって、ini設定をenable_dl設定しonても機能しない場合は、使用するSAPIで無効になっています。

どのSAPIが意味されているのか疑問に思われる場合は、同じページの変更ログがより詳細になります。

許可するSAPIdl()はCLIとEmbedのみです。

これら2つのいずれも使用していません。代わりに、拡張機能読み込みディレクティブを使用すれば問題ありません。

于 2012-09-01T10:12:40.857 に答える