繁体   English   中英

php自定义C ++模块可以从命令行运行,而不是在Web服务器上运行

[英]php custom C++ module works from command line, not on webserver

我用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服务器运行扩展时,它没有该环境变量。

修复是使用/ 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"
                    )
            )
    )
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM