PHP 文件检查总是返回 false
Posted
技术标签:
【中文标题】PHP 文件检查总是返回 false【英文标题】:PHP File checking always returning false 【发布时间】:2017-08-02 01:11:21 【问题描述】:这段代码从 RSS 提要中读取,并应检测服务器上是否存在图像:
<?php
$feedURL = 'http://www.goapr.com/news/category/product-release/feed/';
$sxml = @simplexml_load_file($feedURL);
if($sxml)
$i=0;
foreach($sxml->channel as $channel)
foreach($channel->item as $item)
//if($i==6)break;
if($item->prodimg=="~")break;
if($item->prodpage=="~")break;
$i += 1;
$file = 'http://www.goapr.co.uk'. $item->prodimg;
if (file_exists($file))
echo "The file $file exists";
else
echo "The file $file does not exist";
else
echo 'Sorry there was an error. The recent products will return shortly.';
?>
许多图像确实存在,但它返回所有未找到的图像:
文件http://www.goapr.co.uk/includes/img/newprod/ultras4.png不存在文件http://www.goapr.co.uk/includes/img/newprod/30tpulleys.png不存在文件http://www.goapr.co.uk/includes/img/newprod/tiguan.png不存在文件http://www.goapr.co.uk/includes/img/newprod/2325row.png不存在文件http://www.goapr.co.uk/includes/img/newprod/plus.png不存在文件http://www.goapr.co.uk/includes/img/newprod/2017r.png不存在文件http://www.goapr.co.uk/includes/img/newprod/v24gti.png不存在文件http://www.goapr.co.uk/includes/img/newprod/q5gen3.png 不存在文件http://www.goapr.co.uk/includes/img/newprod/s8downpipes.png 不存在文件http://www.goapr.co.uk/products/ 所有图像都被检测为未找到。
它与:How to check if a file exists from a url 不同,因为这些文件与此 PHP 页面位于同一文件系统上。
【问题讨论】:
file_exists 仅适用于本地文件系统。我个人使用 cURL 打开连接并获取信息并检查响应是否为 404,但通常检查fopen
是否成功就足够了。
您好,谢谢。这些文件与这个 PHP 页面在同一个文件系统上,这有帮助吗?
How check if file exists from the url的可能重复
您需要通过它们的本地路径而不是 URL 来检查它们,然后例如$_SERVER["DOCUMENT_ROOT"]."path/to/pictures/"...
【参考方案1】:
如果您需要检查本地文件系统上的文件是否存在,您应该通过它的本地路径而不是其 URL 来引用它,例如:
$file = $_SERVER["DOCUMENT_ROOT"]."/path/to/images/".$item->prodimg;
请注意,DOCUMENT_ROOT
是网络服务器主机设置的根路径(这意味着它可能无法在命令行中使用。
如果图像与当前运行的脚本位于同一目录中,您也可以使用__DIR__."/".$item->prodimg
。
【讨论】:
以上是关于PHP 文件检查总是返回 false的主要内容,如果未能解决你的问题,请参考以下文章
mysql_query 总是用 SELECT EXISTS 返回 false
File.Exists() 在 IIS 上总是返回 false
当变量在文件名中时,PHP file_exists 返回 false