nginx 和 PHP GeoIP 模块的内部错误 500
Posted
技术标签:
【中文标题】nginx 和 PHP GeoIP 模块的内部错误 500【英文标题】:Internal Error 500 with nginx and PHP GeoIP Module 【发布时间】:2015-02-19 00:00:44 【问题描述】:我正在尝试在 php 脚本中查找与外部 IP(不是访问者)关联的国家/地区。我已经安装了模块。当我运行nginx -V
时,--with-geoip-module 出现在列表中,并且我在 /usr/share/GeoIP/ 中有 GeoIP.dat 文件我的服务器。我的 nginx.conf 中也有 GeoIP 文件的路径:
geoip_country /usr/share/GeoIP/GeoIP.dat; # the country IP database
这是我用来测试的代码:
<?php
echo geoip_country_code_by_name('69.84.125.113');
?>
这将返回以下错误:
PHP 消息:PHP 致命错误:在第 7 行的 /usr/share/nginx/html/geoip.php 中调用未定义函数 geoip_open()”,同时从上游读取响应标头,客户端:69.84.125.113,服务器:localhost ,请求:“GET /geoip.php HTTP/1.1”,上游:“fastcgi://unix:/var/run/php5-fpm.sock:”,主机:“mydomain.com”
请帮忙,我整天都在为此苦苦挣扎!
【问题讨论】:
【参考方案1】:我认为您需要先包含它。
include ("include/geoip.inc");
【讨论】:
我通过添加包含和 $gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);但这是否意味着每次处理脚本时都会加载这个 700kb 的文件?我正在编写一个每秒可能触发多次的跟踪脚本,因此每次运行时加载一个大小的文件确实不理想。 是的,我认为它每次都必须加载。也许你可以将你需要的函数移动到一个新文件中,然后包含它……听起来很乏味。以上是关于nginx 和 PHP GeoIP 模块的内部错误 500的主要内容,如果未能解决你的问题,请参考以下文章