![](/img/trans.png)
[英]Installing php-module using port on osx lion. It works from command line but not from apache
[英]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.