【问题标题】:config nginx to run php in sub folder配置 nginx 在子文件夹中运行 php
【发布时间】:2015-09-26 07:29:02
【问题描述】:

我正在我的服务器上安装limesurvey。

由于 nginx 最初被用作机器上我的 golang 服务器的代理,我必须让 php 在子文件夹中运行。

limesurvey 在磁盘上的根目录是 /limesurvey。

所以我的 nginx 配置如下:

location /limesurvey {
    alias    /limesurvey;
}
location ~ /limesurvey/.*\.php$ {
    alias /limesurvey;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME /$fastcgi_script_name;
    include fastcgi_params;
}
location / {
    proxy_pass http://127.0.0.1:8080;
}

但是当我访问http://example.com/limesurvey/index.php时,它显示:

  opendir(/limesurvey/limesurvey/tmp/assets/1086beef): failed to open dir: No such file or directory

我要存档的是: http://example.com/limesurvey/* 进入本地文件系统 (/limesurvey/*)

所有其他查询都转到 127.0.0.1:8080

如何配置 nginx 来解决这个问题?

【问题讨论】:

  • 问题不在您的 nginx 配置中,而在您的 index.php 代码中。您尝试打开 url / src 设置为“/limesurvey/tmp/assets/1086beef”的东西,但您必须打开 url / src 设置为“/tmp/assets/1086beef”...!显示 index.php 代码 ;)
  • @Julo0sS 我正在安装limesurvey,我猜项目中会有很多这样的代码。有什么办法可以用 nginx 配置来解决这个问题?
  • 一方面,你说服务器,当用户想去你的网站根目录时,服务器自动去根目录/limesurvey。而且,另一边(在 index.php 中)你告诉一些东西去从 root/limesurvey 中获取信息。但是您已经将(服务器端)root 定义为 root/limesurvey。这会导致错误的 root/limesurvey/limesurvey/... 事情!
  • IMO:您不必配置 /limesurvey... 您只需正确配置您的根。然后如果用户进入 root/limesurvey,那么它就可以正常工作了......
  • 我已经编辑了这个问题。因为我已经有了,并且必须在 web 根目录上保留 proxy_pass 设置,所以我必须让子文件夹只运行 php。

标签: php nginx


【解决方案1】:
location ~ /limesurvey/.*\.php(.*)$ {
access_log /1.logs;
    root /lms/;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME /lms$fastcgi_script_name;
    include fastcgi_params;
}
location /limesurvey {
  root   /lms/;
}

并将 /limesurvey 文件夹移动到 /lms/limesurvey 文件夹

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-15
    • 2015-03-03
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 2023-02-04
    相关资源
    最近更新 更多