0

我正在运行一个 PHP 内置服务器

php -S 127.0.0.1:80 index.php

我想将整个 URI 字符串传递给 $_GET 数组中名为“url”的字段。当我输入时http://localhost/thisIsAURLString,我想var_dump($_GET);返回array(1) { ["url"]=> string(16) "thisIsAURLString" } 有没有办法用 PHP 内置服务器做到这一点?

Web 应用程序通常在带有 nginx 的生产环境中运行,并带有如下所示的配置文件。此配置将 URL 传递给 $_GET 变量中的字段“url”,但我想对 PHP 内置服务器执行类似的操作。

server {

    listen 5001 default_server;
    listen [::]:5001 default_server ipv6only=on;
    root [myRoot];
    index index.php index.html index.htm;
    server_name [myServerName];


    location /uploads {
                try_files $uri $uri/ =404;
        }

        location /assets {
                try_files $uri $uri/ =404;
        }
    location / {
        try_files $uri $uri/ /index.php?$query_string;
        rewrite ^/(.*)$ /index.php?url=$1 last;
    }

    location ~ .php$ {

        fastcgi_split_path_info ^(.+.php)(/.+)$;
        fastcgi_index index.php;
        fastcgi_pass unix:/var/run/php/php7.0-fpm-01.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }
}

编辑(一些上下文):

背景是我是一个有很多学生的助教。有问题的 Web 应用程序目前在带有 nginx 的生产环境中并且运行顺利,但是我所有的大约 100 名学生都需要在他们自己的计算机上本地下载和部署相同的 Web 应用程序。我无法更改 PHP 代码。部署应该尽可能简单和顺利,如果他们可以使用一些易于重现的 php 命令来做到这一点,那将是理想的。

4

3 回答 3

1

您可以使用此脚本引导您的应用程序。将此片段保存到文件中,并将其设置为您正在使用的任何 Web 服务器软件的入口点。它将产生您要求的结果。

<?php
   $root=__dir__;

   $uri=parse_url($_SERVER['REQUEST_URI'])['path'];
   $page=trim($uri,'/');  

   if (file_exists("$root/$page") && is_file("$root/$page")) {
       return false; // serve the requested resource as-is.
       exit;
   }

   $_GET['url']=$page;
   require_once 'index.php';
?>
于 2018-07-19T10:18:53.760 回答
0

我不确定你在问什么,但让我从以下开始:

你在说什么“领域”?

您是否要在哪里打印网址?

“PHP内置服务器”是什么意思?

$_GET 是一个超全局变量,数组类型,由 PHP(一种服务器端脚本语言)填充。您所要做的就是调用它(例如 $_GET['link'] 而链接可以是您想要的任何东西)或类似的东西(请检查http://php.net/manual/en/reserved.variables.get。 php ). 您可以在任何 php 文件中使用它。

于 2018-02-07T17:36:26.483 回答
0

您可能想查看全局 $_SERVER 数组。这包含 HTTP_HOST、QUERY_STRING、REQUEST_SCHEME 和 REQUEST_URI 数组键。这些可用于组装完整的 url。试试 var_dump($_SERVER); 查看所有键 => 值。

您需要使用 $_GET 全局数组是否有特殊原因?

希望这可以帮助。

于 2018-02-07T17:51:12.127 回答