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的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式在 NGINX 中查询 GeoIP

在 Nginx 和 UWSGI 中使用 GeoIP 模块

使用 nginx 运行 geoip 模块

Nginx geoip模块

nginx中Geoip_module模块的使用

如何在生产环境中运行的 Nginx 上安装 Geoip2 模块?