【发布时间】:2017-11-17 00:40:03
【问题描述】:
我有一个 PHP 项目,其中有一个 index.html,格式很简单:
<p>Test connection</p>
<form action="Servicios.php" method="post">
<input type='submit' name='Test' value='Test'>
</form>
在 Servicios.php 中我试图像这样处理它
<?php
echo "can you print this";
if($_SERVER["REQUEST_METHOD"]=="POST" )
{
if(!empty($_POST["Test"]))
{
echo "Hello world";
}
}
但它不起作用,那是因为它永远不会评估第一个 if 像“true”。顶部的第一个回显确实有效,但如果我对 $_SERVER["REQUEST_METHOD"] 进行回显,它不会给我任何东西。我已经尝试过 isset($_POST['Hola']) 但我得到了相同的结果。
这只发生在我在互联网主机中的项目中。我使用 netbeans 和 xampp 在本地计算机上编写了完全相同的代码,并且运行良好。我不知道为什么。
我觉得我犯了一些愚蠢的错误,但我找不到。
我的主机是来自 ec2 Amazon Web Services 的 Ubuntu 服务器。
编辑
这是 Servicios.php 中<?=print_r($_SERVER);?> 的输出
我用 [ip] 替换了显示我的 ip 的部分
Array (
[HTTP_HOST] => [ip]
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => es-MX,es-ES;q=0.9,es;q=0.7,es-AR;q=0.6,es-CL;q=0.4,en-US;q=0.3,en;q=0.1
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_REFERER] => http://[ip]/ProyectoPM/
[CONTENT_TYPE] => application/x-www-form-urlencoded
[CONTENT_LENGTH] => 11
[HTTP_CONNECTION] => keep-alive
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[SERVER_SIGNATURE] => Apache/2.4.18 (Ubuntu) Server at [ip] Port 80
[SERVER_SOFTWARE] => Apache/2.4.18 (Ubuntu)
[SERVER_NAME] => [ip]
[SERVER_ADDR] => 172.31.43.105
[SERVER_PORT] => 80
[REMOTE_ADDR] => 189.208.87.127
[DOCUMENT_ROOT] => /var/www/html
[REQUEST_SCHEME] => http
[CONTEXT_PREFIX] =>
[CONTEXT_DOCUMENT_ROOT] => /var/www/html
[SERVER_ADMIN] => webmaster@localhost
[SCRIPT_FILENAME] => /var/www/html/ProyectoPM/Servicios.php
[REMOTE_PORT] => 5672
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => POST
[QUERY_STRING] =>
[REQUEST_URI] => /ProyectoPM/Servicios.php
[SCRIPT_NAME] => /ProyectoPM/Servicios.php
[PHP_SELF] => /ProyectoPM/Servicios.php
[REQUEST_TIME_FLOAT] => 1510846404.812
[REQUEST_TIME] => 1510846404 ) 1
这是在它返回的数组中<?=var_dump($_SERVER); ?>
["SERVER_PROTOCOL"]=> string(8) "HTTP/1.1"
["REQUEST_METHOD"]=> string(4) "POST"
["QUERY_STRING"]=> string(0) ""
["REQUEST_URI"]=> string(25) "/ProyectoPM/Servicios.php"
["SCRIPT_NAME"]=> string(25) "/ProyectoPM/Servicios.php"
["PHP_SELF"]=> string(25) "/ProyectoPM/Servicios.php"
["REQUEST_TIME_FLOAT"]=> float(1510847672.582)
["REQUEST_TIME"]=> int(1510847672) }
更重要的修改
起初我说一个简单的echo "can you print this"; 在主机中工作,现在我发现它也没有。当我通过单击 index.html 中的按钮移至 Servicios.php 时,浏览器将移至 Servicios.php(它在 url 中显示),但它根本不显示任何内容。仅当我删除所有代码并输入<?=print_r($_SERVER);?> 之类的指令时,它才会显示一些东西,结果我已经在上面放了。
【问题讨论】:
-
运行
print_r($_SERVER)看看里面有什么。 -
显示该请求的 Web 服务器日志。
-
好的,print_r($_SERVER) 给了我一个很长的数组,我到底应该搜索什么?
-
你能告诉我们吗?你可以找
REQUEST_METHOD -
你确定
var_dump($_SERVER["REQUEST_METHOD"])什么都没有显示吗?
标签: php html amazon-ec2