Php 收割台位置工作不正常

Php 收割台位置工作不正常,php,redirect,http-headers,imagick,Php,Redirect,Http Headers,Imagick,我有一个php脚本,它渲染一个图像(使用imagick)并将其保存到某个目录“SITE\u ROOT.$filePath”,然后执行头('Location:'.SITE\u ROOT.$filePath),它重定向到的文件是一个png图像 如果我直接进入路径,就像在URL栏中键入一样,我可以保存图像,一切正常,但是当我依靠脚本重定向我,尝试右键单击并保存图像时,它无法识别我实际上是在保存图像,它认为我试图将其保存为名为“Driver”的非类型文件,这是脚本页面的名称 我不知道这里出了什么问题,当

我有一个php脚本,它渲染一个图像(使用imagick)并将其保存到某个目录
“SITE\u ROOT.$filePath”
,然后执行
头('Location:'.SITE\u ROOT.$filePath)
,它重定向到的文件是一个png图像

如果我直接进入路径,就像在URL栏中键入一样,我可以保存图像,一切正常,但是当我依靠脚本重定向我,尝试右键单击并保存图像时,它无法识别我实际上是在保存图像,它认为我试图将其保存为名为“Driver”的非类型文件,这是脚本页面的名称

我不知道这里出了什么问题,当然标题位置应该只带我到图像,并且在重定向后没有“驱动程序”文件的记录

同样的事情也发生在
redirect()

提前感谢您的帮助

编辑:通过在header命令后放置
die()
解决了此问题。

header('Location:'。$filePath)

SITE_ROOT是服务器上htdocs目录的位置;但是头位置应该是文件的路径相对于htdocs目录头('Location:'。$filePath)


SITE_ROOT是服务器上htdocs目录的位置;但是头位置应该是文件的路径相对于htdocs目录

您使用的文件路径与头位置不匹配。你应该使用URL

最好的做法是在标题位置使用绝对URL。PHP文档说明:

HTTP/1.1需要一个绝对URI作为 参数到»位置:包括 方案、主机名和绝对路径, 但有些客户机接受相对URI。()

也总是在事后退出脚本,因为根据我的经验,在某些情况下,重定向之后的代码可能仍然会被执行。因此,一个很好的例子如下所示:

header("location:http://www.mysite.com/path/to/myfile.php");
exit;
在这种情况下,您通常会使用服务器变量:

$url = $_SERVER["HTTP_HOST"]."/path/to/myfile.php";
header("location:".$url);
exit;

干杯

您使用的文件路径不适用于头位置。你应该使用URL

最好的做法是在标题位置使用绝对URL。PHP文档说明:

HTTP/1.1需要一个绝对URI作为 参数到»位置:包括 方案、主机名和绝对路径, 但有些客户机接受相对URI。()

也总是在事后退出脚本,因为根据我的经验,在某些情况下,重定向之后的代码可能仍然会被执行。因此,一个很好的例子如下所示:

header("location:http://www.mysite.com/path/to/myfile.php");
exit;
在这种情况下,您通常会使用服务器变量:

$url = $_SERVER["HTTP_HOST"]."/path/to/myfile.php";
header("location:".$url);
exit;

干杯

首先调试:
SITE\u ROOT.$filePath
包含什么?你能显示重定向的完整代码吗?我敢打赌脚本在
header()
命令之后不会
die()
。但是只有显示代码才能确定。site_root是一个绝对URL,它是在我的应用程序中定义的常量,它包含的内容类似于“”,然后文件路径是“uploads/image.png”,但使用die()确实修复了它,在header命令后我有一些注释,我没有意识到它会尝试执行它们:/无论如何,谢谢!:Dpls看到这个链接:首先调试:
SITE\u ROOT.$filePath
包含什么?你能显示重定向的完整代码吗?我敢打赌脚本在
header()
命令之后不会
die()
。但是只有显示代码才能确定。site_root是一个绝对URL,它是在我的应用程序中定义的常量,它包含的内容类似于“”,然后文件路径是“uploads/image.png”,但使用die()确实修复了它,在header命令后我有一些注释,我没有意识到它会尝试执行它们:/无论如何,谢谢!:DPL请参阅此链接: