0

C++ と Swig でカスタム PHP モジュールを作成しました。コマンドラインからは機能しますが、私のWebサーバーでは機能しません:

php index.php
php-cgi index.php

どちらも正常に動作します。

lighttpd と php を使用しています。これらを特別な方法で構成しませんでした。sudo apt-get install を使用してインストールしました。

残念ながら、ウェブページを作成すると、次のようになります。

Fatal error: Call to undefined function minikey_to_wif() in /var/www/index.php on line 6 

function_exists("minikey_to_wif") を呼び出すと、False も返されます。

phpinfo() では、minikey というモジュールが表示されず、編集したファイル (/etc/php5/cgi/php.ini) と同じ構成パスが表示されます。

extension=/path/to/php-ext/minikey/minikey.so

また、他の PHP 拡張機能がインストールされていると思われる場所 (/usr/lib/php5/20090626+lfs/) にコピーしようとしましたが、それも機能しませんでした。

lighttpd を数え切れないほど停止したり、開始したりしてきました。ps aux | を実行するたびに grep php、結果はありません。また、数回再起動しても効果がありませんでした。何が起きているのかわかりません。

4

2 に答える 2

2

OKは答えを見つけました。

拡張機能は、非標準の場所にインストールされたライブラリに依存していました。通常は ~/.bashrc に LD_LIBRARY_PATH を設定します。しかし、Web サーバーが拡張機能を実行したとき、その環境変数はありませんでした。

修正は、/etc/ld.so.conf.d/genjix.conf に /home/genjix/usr/lib でファイルを作成し、ルートとして ldconfig を実行することでした。

于 2012-07-17T15:19:05.090 に答える
0

lighty を使用して phpinfo() を実行してみてください。正しい php.ini を指していることを確認してください。

これが問題だと思われる場合は、lighttpd.conf 内から -c スイッチを使用して php を起動できます"bin-path" => "/path/to/php-cgi -c /path/to/php.ini"

例えば

fastcgi.server = (
    ".php" => (
            (
                    "bin-path" => "/path/to/php-cgi -c /path/to/php.ini",
                    "socket" => "/tmp/php.socket",
                    "max-procs" => 4,
                    "idle-timeout" => 30,
                    "bin-environment" => (
                            "PHP_FCGI_CHILDREN" => "4",
                            "PHP_FCGI_MAX_REQUESTS" => "1000"
                    )
            )
    )
)
于 2012-07-17T15:22:59.593 に答える