php自定义C++模块通过命令行工作,而不是在Web服务器上
php custom C++ module works from command line, not on webserver
我用C++和Swig制作了一个自定义的PHP模块。它可以从命令行工作,但不适用于我的Web服务器:
php index.php
php-cgi index.php
这两个都很好。
我使用的是lighttpd和php。我没有以任何特殊的方式配置这些。我刚刚用sudo apt-get安装了它们。
不幸的是,如果我制作一个网页,我会得到这个:
Fatal error: Call to undefined function minikey_to_wif() in /var/www/index.php on line 6
调用function_exists("minikey_to_if")也返回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时,都没有结果。我也重新启动过几次,但都没有效果。我不知道发生了什么事。
OK找到了答案。
扩展依赖于安装在非标准位置的库。通常我在~/.bashrc中设置LD_LIBRARY_PATH。但当web服务器运行扩展时,它没有那个环境变量。
修复方法是使用/home/genjix/usr/lib在/etc/ld.so.conf.d/genjix.conf中创建一个文件,并以root身份运行ldconfig。
尝试使用lighty运行phpinfo()。确保它指向正确的php.ini。
如果您认为这就是问题所在,您可以使用"bin-path" => "/path/to/php-cgi -c /path/to/php.ini"
:从lighttpd.conf内部使用-c开关启动php
例如
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"
)
)
)
)
相关文章:
- 来自带有mbedtls TLS的Mongoose Web服务器的错误消息
- 使用 ESP8266/8285 将字符串从 Web 服务器转换为字节数组
- 可能在OpenShift3上部署C Web服务器
- 无法从Web服务器读取UTF-8缓冲区
- 有没有人知道如何终止ESP8266 http Web服务器/接入点
- 封装ESP8266 Web服务器的粘合剂功能
- 从QT Web服务器处理多个客户端
- web服务器如何知道何时完全接收到HTTP请求
- 示例web服务器和endianness
- 如何在web服务器中使用c++应用程序
- C++中的多线程 Web 服务器
- Web 服务器缓冲区
- PHP Web服务器集成到本地运行的C++exe?他们是如何互动的
- 将我的简单winsock服务器/客户端应用程序变形为简单的Web服务器
- c++的简单Web服务器
- php自定义C++模块通过命令行工作,而不是在Web服务器上
- 在 Linux 中用C++编写的 Web 服务器/Web 服务
- 客户端身份验证或与Mongoose Web服务器的相互身份验证
- 在 Web 服务器中 utf-8 和 unicode 之间进行转换
- C++ 将请求发送到 Web 服务器上的 API,然后接收 JSON 数组响应