我用 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/),但这也没有用。
我无数次停止并启动 lighttpd。每次,当我运行 ps aux | grep php,没有结果。我也重新启动了几次都没有效果。我不知道发生了什么事。
最佳答案
确定找到答案。
该扩展依赖于安装在非标准位置的库。通常我在 ~/.bashrc 中设置 LD_LIBRARY_PATH。但是当 Web 服务器运行扩展时,它没有那个环境变量。
修复是在/etc/ld.so.conf.d/genjix.conf 中创建一个文件,其中包含/home/genjix/usr/lib 并以 root 身份运行 ldconfig。
关于php 自定义 C++ 模块从命令行工作,而不是在网络服务器上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11525163/