我使用Mysql数据库,PHP会话等在我的本地WAMP上用PHP 5.4创建了一个小网站。
当将网站文件上传到我的在线主机 - 运行PHP 5.6时 - 我遇到了所有GET变量的问题,它似乎不是函数式的。
在我的本地计算机上:
// Requested URL : index.php?title=Hello
<?php
echo $_GET["title"]; // works
?>
在服务器上:
// Requested URL : index.php?title=Hello
<?php
echo $_GET["title"]; // empty.
?>
疯狂!我不明白会发生什么......我读了#34;从PHP 5.4.x迁移到PHP 5.6.x&#34; &#34;从PHP 5.5.x迁移到PHP 5.6.x&#34;但我没有设法找到不起作用的东西。
你有什么想法吗?
编辑01/13:我创建了一个非常简单的表单页面:
<?php
echo $_POST["texttest"]."<hr />";
?>
<form action="?" method="POST">
<input type="text" name="texttest" class="texttest" id="texttest" />
<input type="submit" value="test">
</form>
..永远不会显示POST var。当我在提交表单后查看Chrome控制台时,我会收到一条消息:
显示临时标题
答案 0 :(得分:2)
使用phpinfo设置测试脚本,以查看主机上的ini变量。
<?php
phpinfo();
?>
http://php.net/manual/en/ini.core.php#ini.variables-order 如果以某种方式设置变量顺序 - $ _GET可能不可用......
我的设置为:
; This directive determines which super global arrays are registered when PHP
; starts up. G,P,C,E & S are abbreviations for the following respective super
; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty
; paid for the registration of these arrays and because ENV is not as commonly
; used as the others, ENV is not recommended on productions servers. You
; can still get access to the environment variables through getenv() should you
; need to.
; Default Value: "EGPCS"
; Development Value: "GPCS"
; Production Value: "GPCS";
; http://php.net/variables-order
variables_order = "GPCS"
如果您有权访问php.ini - 您只需更改它即可。
修改强>
确定 - 确认variables_order =&#34; GPCS&#34;。
如果将源测试代码编辑为此 - 结果是什么?
<?php
echo 'This is my page'; // should always print- just to make sure you are on the correct page
echo '$_REQUEST:'.print_r($_REQUEST,true);
echo '$_GET: '.print_r($_GET,true);
echo '$_POST: '.print_r($_POST,true);
echo $_GET["title"]; // empty.
?>
答案 1 :(得分:0)
; PHP是否将读取POST数据。 ;默认情况下启用此选项。 ;您很可能不想在全局禁用此选项。它导致$ _POST ; $ _FILES始终为空;您将能够阅读的唯一方法 ; POST数据将通过php:// input流包装器。这很有用 ;代理请求或以内存有效方式处理POST数据。 ; http://php.net/enable-post-data-reading enable_post_data_reading =关闭
删除;从第一行开始; enable_post_data_reading =关闭