标头位置在 PHP 中不起作用 [重复]
Posted
技术标签:
【中文标题】标头位置在 PHP 中不起作用 [重复]【英文标题】:Header Location not working in Php [duplicate] 【发布时间】:2016-08-21 00:16:37 【问题描述】:以下语句似乎不起作用。我也没有收到任何错误消息。
header("Location: /home/shaliu/Projects/Nominatim/website/search.php?q="+$query);
我在 search.php 文件中使用 file_put_contents()。
有没有办法找出问题所在?
【问题讨论】:
你应该在 header-location 中使用完整的而不是相对的 URI 在调用header
之前,您还应该确保没有其他echo
出现在屏幕上
@windrunn3r.1990 如果是这种情况,他会\应该收到一条错误消息
哦,是的!忘了那个。谢谢
当然很多人很傻,开发时关闭了错误检查\显示,所以,这不是一个无效点:_0
【参考方案1】:
改变这个:
+$query
到这里:
.$query
因为:
+ 是 javascript 的连接运算符,其中 . 是 php 的连接参数
另外,您发送的路径似乎不正确。 header函数里面的参数应该是一个完整的网址,例如以http
开头:
header('Location: http://www.example.com/');
虽然您的答案是使用本地文件路径:"Location: /home/shaliu/Projects/Nominatim..."
。
【讨论】:
解释代码真的很有帮助,而不仅仅是说“做这个” 这也无济于事。该文件仍未被调用。【参考方案2】:请尝试:
你可以使用:
header("Location: http://www.example.com/search.php?q=".$query);
exit();
或者如果您的 search.php 文件位于根目录:
header("Location: /search.php?q=".$query);
exit();
也许对你有帮助。
【讨论】:
【参考方案3】:输入错误报告(E_ALL);
使用相对路径。
更改为
header("Location: /home/shaliu/Projects/Nominatim/website/search.php?q="+$query);
在 php 中用于连接使用 ".","+" 在 javascript 中而不是在 php 中使用
header("Location: /home/shaliu/Projects/Nominatim/website/search.php?q=".$query);
请为文件设置正确的路径
【讨论】:
【参考方案4】:在将+
固定为.
之后,正如@Webeng 之前所说的那样。
如果您通过在浏览器中输入 /home/shaliu/Projects/Nominatim/website/index.php
来访问您的页面,标题将根本不起作用,因为您不在网络上下文中,而是在本地文件视图上下文中。
如果您通过http://localhost/Nominatim/index.php
访问它,您将处于网络环境中,但您的标头将不起作用,因为您在技术上将重定向发送到http://localhost/home/shaliu/Projects/Nominatim/website/search.php
的路径,该路径可能在此位置不存在。如果您的 website/
文件夹链接到 http://localhost/
或任何适当的,您应该将其更改为:/search.php
,而不是这样,取决于您的环境配置。
【讨论】:
【参考方案5】:你可以试试这个。希望对你有帮助
header('Location: http://www.example.com/search.php?q='.$query);
【讨论】:
【参考方案6】:header( ) 用于发送 http 标头 (http://php.net/manual/en/function.header.php)。看起来好像您正在尝试使用本地文件路径而不是 http(Web)地址来访问 php 文件。 “/home/shaliu/Projects/Nominatim/website/search.php”需要可通过网络访问,并且该网址是 header() 中需要使用的地址(请参阅@Purushotham 的答案)。
【讨论】:
【参考方案7】:如果你正在使用
/home/shaliu/Projects/Nominatim/website/search.php
在这种情况下,您的位置以 / 开头,这意味着主文件夹(目录)应位于服务器的根文件夹中。例如,作为本地服务器,如果我们考虑 XAMPP,则主文件夹应位于 C:\xampp\htdocs(通常)内,如果我们考虑 WAMP,则主文件夹应位于 www 文件夹内。
如果您的主文件夹位于当前页面所在的文件夹中,那么您应该使用
home/shaliu/Projects/Nominatim/website/search.php
没有 /(需要正斜杠)。
第二件事是您需要将 + 替换为 .连接字符串。
所以,如果您的主文件夹位于服务器的根目录中,那么您应该使用
header("Location: /home/shaliu/Projects/Nominatim/website/search.php?q=".$query);
否则,你应该去
header("Location: home/shaliu/Projects/Nominatim/website/search.php?q=".$query);
【讨论】:
【参考方案8】:用测试“如果文件存在”试试这个代码:
if(is_file("/home/shaliu/Projects/Nominatim/website/search.php"))
header("Location: /home/shaliu/Projects/Nominatim/website/search.php?q=".$query);
else
echo "Error!";
记住:在 php 中用于连接使用
.
(@shivani parmar)记住:如果
header
在任何html元素之后被调用,php会返回错误!
【讨论】:
【参考方案9】:header("Location:https://www.example.com/search.php?q='<?php echo $get_id; ?>'");
请试试这个 php 代码。 如果您在 php 第一个标头和位置中使用标头,则问号您的搜索获取 ID。
【讨论】:
【参考方案10】:您需要将 plus(+) 替换为 dot(.) 以连接字符串。
试试这个。
header('Location: http://www.example.com/search.php?q='.$query);
【讨论】:
【参考方案11】:除了已经指出的明显的连接问题,看起来这条路径/home/shaliu/Projects/Nominatim/website/search.php
是一个*NIX
路径;给定它开头的/home/<user>
模式。
如果是这种情况,并且您正尝试像这样在 Web 服务器根目录之外打开文件,那么您的问题很可能是权限问题。将您的 search.php
移动到 Web 服务器进程可访问的位置并在您尝试打开 Web 服务器进程的文件上运行 chmod
/chown
可能会解决您的问题。此外,您可能必须指定您使用的操作系统,以防您还需要运行chcon
。
哦,我会发表评论,但我似乎没有必要的代表来添加 cmets。
【讨论】:
以上是关于标头位置在 PHP 中不起作用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
PHP Header Location 在 localhost xampp 中不起作用?