【问题标题】:Header Location not working in Php [duplicate]标头位置在 PHP 中不起作用 [重复]
【发布时间】: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

标签: php header location


【解决方案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。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2015-10-02
                      • 1970-01-01
                      • 2022-01-17
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多