当前位置: 首页 > 知识库问答 >
问题:

NGINX显示脚本代码而不是执行

国俊艾
2023-03-14

我和NGINX的关系很紧张,这让我很疯狂。我有Ubuntu 12.04。VirtualBox上有3个LTS。我按照以下说明安装了NGINX-MYSQL-PHP:

  1. 安装php5 fpm

然后我在/etc/nginx/sites available/default中设置:

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

本地主机和信息。php被正确执行。现在我想建立一个本地网站,并尝试做一些重定向。因此,我在/usr/share/nginx/www中创建了一个名为mywebsite的新文件夹,放置索引。php内置一个echo指令,一个我重定向到的php脚本,在站点中添加了一个新的配置文件,并在站点中添加了一个链接,并在nginx中禁用应用程序/八位字节流。conf,以避免下载脚本文件。因此,我将我的新配置文件设置为:

server {
    listen   80;

    root /usr/share/nginx/www/mysite;
    index index.php index.html index.htm;

    server_name www.mysite.com;

    location / {
      try_files $uri $uri/ /index.html;
      if (!-e $request_filename){
        rewrite ^/location/([0-9]+)/device/([0-9]+)/senseddata/$ /senseddata.php break;
        rewrite ^/location/([0-9]+)/device/([0-9]+)/senseddata/lasthour/$ /senseddata.php break;
        rewrite ^/location/([0-9]+)/device/([0-9]+)/senseddata/daily/$ /senseddata.php break;
      }
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    location = /50x.html {
       root /usr/share/nginx/www;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
       fastcgi_pass unix:/var/run/php5-fpm.sock;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
       try_files $uri =404;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
    deny all;
   }
}

那么到底发生了什么?我ndex.php执行得当。重写做得很好,但是脚本没有执行。我只看到我写的整个代码显示在浏览器中。有什么问题?提前感谢。

共有2个答案

淳于玺
2023-03-14

尝试添加fastcgi\u split\u path\u info^(.\.php)(/)$ 位置~\。php$并重新启动nginx。

从我的配置示例

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

孙言
2023-03-14

还要检查PHP文件中的开始标记。如果您使用

 类似资料:
  • 问题内容: 我最近一直在尝试在计算机上安装php和apache。几个小时后,它们就安装了。我已经像大家一样修改了httpd.conf和php.ini文件。然后,我创建了一个简单的php脚本: 但是,当我尝试使用它运行时,只会显示源代码而不是执行代码。我正在使用apache2,php5和Windows Vista。我一直在互联网上搜索失败,并且几乎要把头撞在墙上。谁能救我脱离脑震荡? 编辑的行: P

  • 我是PHP新手。为什么Apache只显示文件内容而不执行? 我用PHP5.5在ubuntu 14的apache2子域上安装了prosper202。9-1本图4。20(cli)(构建时间:2016年10月3日13:00:37)和php fpm,但它只显示,它不会引导我进入设置过程。 怎么了,怎么运行?

  • 我最近一直试图在我的电脑上安装PHP和Apache。几个小时后,它们就安装好了。我已经像大家说的那样修改了httpd.conf和php.ini文件。然后我创建了一个简单的PHP脚本: 但是当我尝试使用它只是显示源代码,而不是执行源代码。我正在使用Apache2、PHP5和WindowsVista。 编辑行: PHP。INI: HTTPD。形态

  • 第一次与Laravel和Beanstalk合作。我加载了我的代码,主页上说权限被拒绝,当我添加/public时,它说找不到。 经过一些搜索,我更新了我的文件的DocumentRoot从到,执行了“sudo服务httpd重启”,现在它在我的EC2主页上显示以下未格式化的文本 (http://craftaxethrowingtimers-env.eu-west-1.elasticbeanstalk.c

  • 我对IntelliJ有问题--如果我用Ctrl+单击该类,它会显示一个类的“反编译”版本,而不是它的源代码。 这就是我所看到的: 我正在尝试打开常规的JDK源文件。 src.zip没有损坏-我可以通过WinRAR打开它 当将JDK1.8.0_161添加到IntelliJ中时,它会自动找到src.zip。当手动将src.zip添加到jbsdk8u112b287.2_windows_x86 Sourc

  • 我有多模块Android/Gradle项目。该项目有两个Java模块和几个Android模块。我通过runnig项目根目录中的sonarRunner任务来启动sonar。不幸的是,“代码行”、“文件”、“函数”、“复杂性”等不包括Android.java文件。 谢谢