0

我用 C++ 和 Swig 制作了一个自定义 PHP 模块。它适用于命令行,但不适用于我的网络服务器:

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/),但这也不起作用。

我已经停止并无数次启动 lig​​httpd。每次,当我运行 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 创建一个文件,并以 root 身份运行 ldconfig。

于 2012-07-17T15:19:05.090 回答
0

尝试使用 lighty 运行 phpinfo()。确保它指向正确的 php.ini。

如果您认为这是问题所在,您可以使用 -c 开关从 lighttpd.conf 内部启动 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 回答