php 自定义 C++ 模块从命令行工作,而不是在网络服务器上工作

标签 php c++ zend-framework swig lighttpd

我用 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,没有结果。我也重新启动了几次都没有效果。我不知道发生了什么事。

最佳答案

确定找到答案。

该扩展依赖于安装在非标准位置的库。通常我在 ~/.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/

相关文章:

C++在成员变量中保存不同类型数据的优雅方式

zend-framework - 如何使用 Zend 框架从模型中获取请求对象。

php - 找不到 Laravel 包特征

php - 如何在 phpspreadsheet 中添加新行?

C++ 继承和访问 protected 基类成员 : is doing it Java-style a bad idea?

php - 使用 Zend_Mail 添加多个收件人

php - Doctrine ArrayCollection 对 null 调用成员函数 setValue()

php - 在 Laravel 5.1 中找不到 "Class ' app\Http\Controllers\Controller'

php - 安全存储外部数据库密码

c++ - 将部分专用模板作为模板参数传递