nevermore 发表于 2014-12-11 14:25:33

大家来帮帮忙啊,lnmp遇到了一个大困难

LNMP默认不支持pathinfo,所以很多框架不能运行在lnmp上,例如thinkphp。

当然可以手动配置pathinfo,我配置好之后,确实可以访问了。但是在tp中有一个常量是__ROOT__指向应用的根目录,但是上传到nginx服务器后,这个常量就指向了其他位置,代码是相同的,指向位置却发生了变化。我感觉应该是nginx服务器配置的问题。

军哥能知道是什么毛病吗?我弄了一天了,实在弄不了。军哥帮帮忙啊!

如果实在不行就只能换成lamp了,但是lnmp能转成lamp么 还是要重新做服务器啊?醉了啊!

licess 发表于 2014-12-12 14:57:37

没有现成的脚本可以使用,需要自己弄

nevermore 发表于 2014-12-12 15:45:13

回复 2# 的帖子

晕死了查了很多资料发现还是pathinfo的配置问题。服务器的预定义变量$_SERVER取得的值不对导致的。军哥知道pathinfo应该怎么配置吗?我在网上查资料配置的pathinfo就出错了,修改了N次了

licess 发表于 2014-12-12 16:58:30

lnmp 1.1的话可以看一下http://lnmp.org/changelog.html 这个,里面有启用的方法

nevermore 发表于 2014-12-12 17:29:11

回复 4# 的帖子

军哥 ,发现lnmp的一个问题啊,不知道算不算,弄了两天才弄好这个毛病。

现在lnmp的php.ini中有一项配置是cgi.fix_pathinfo=0,也就是默认开启的。假如不关闭的话,它就会触发一个PHP逻辑

    if (script_path_translated &&
         (script_path_translated_len = strlen(script_path_translated)) > 0 &&
         (script_path_translated == '/' ||
    ....//以下省略.

也就是说,我们在取服务器变量$_SERVER的时候会取得一个错误的值,因为这个PHP逻辑会把xxx.jpg/index.php的xxx.jpg当做SCRIPT_FILENAME,而把index.php当做PATH_INFO.

另外在配置pathinfo的时候,按照你给的pathinfo的配置方法,做完之后是不能支持thinkphp的。军哥你看一下吧,我感觉cgi.fix_pathinfo=1默认关闭的比较好。假如有人恶意上传php脚本,构造这样的请求呢。。

[ 本帖最后由 nevermore 于 2014-12-12 17:32 编辑 ]

licess 发表于 2014-12-12 17:48:21

回复 5# 的帖子

1是开启0是关闭
http://www.laruence.com/2010/05/20/1495.html
页: [1]
查看完整版本: 大家来帮帮忙啊,lnmp遇到了一个大困难