Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP文件存在_Php_File_File Exists - Fatal编程技术网

PHP文件存在

PHP文件存在,php,file,file-exists,Php,File,File Exists,使用PHP,我需要确定文件是否存在 我尝试了file_exists(),但权限有限,我不相信PHP可以读取文件权限。该文件是一张照片,可以通过URL查看 例如: 我已经尝试过is_readable(),但所有结果都是它不存在 我还通过index.php中的函数来测试我是否正确使用了它们,并且通过index.php它们返回了正确的预期结果 是否有一个不同的PHP函数,我可以用来测试一个文件存在的机会或技巧 谢谢…我想你可以使用文件获取内容。失败时返回false,成功时返回文件内容:如果您试图检查本

使用PHP,我需要确定文件是否存在

我尝试了file_exists(),但权限有限,我不相信PHP可以读取文件权限。该文件是一张照片,可以通过URL查看

例如:

我已经尝试过is_readable(),但所有结果都是它不存在

我还通过index.php中的函数来测试我是否正确使用了它们,并且通过index.php它们返回了正确的预期结果

是否有一个不同的PHP函数,我可以用来测试一个文件存在的机会或技巧


谢谢…

我想你可以使用文件获取内容。失败时返回false,成功时返回文件内容:

如果您试图检查本地文件:
file\u exists()
函数对于由于安全模式限制而无法访问的文件返回FALSE。所以试试看 这:

看。简短:文件_exists将仅在您的服务器上检查,它不用于检查URL。您可以使用curl等并检查标题

文件规定:

从PHP5.0.0开始,这个函数也可以与一些URL包装器一起使用。请参阅受支持的协议/包装器列表,了解哪些包装器支持stat()系列功能


这仅仅意味着它可以工作,但通常不会。如果PHP没有读取文件的权限,您将无法通过file_exists()或is_readable()检查文件是否存在,因为这些函数依赖于是否能够在服务器上本地访问文件

唯一可行的解决方案是使用HTTP请求检查文件是否存在

Alex使用file_get_contents()的解决方案是一种方法,但您必须检查

allow\u url\u fopen=true

在php.ini中,所以

文件获取内容(“http://www.seemeagain.com/users/1000002722/gallery_1312973080.jpg“”

允许从HTTP()检索数据

只要您的文件可以通过浏览器读取,您就可以检查文件是否存在,但您仍然需要下载整个文件,这会产生大量的流量开销并需要时间

我的建议是使用

<?
$headers = get_headers("http://www.seemeagain.com/users/1000002722/gallery_1312973080.jpg");

if ($headers[0] == "HTTP/1.1 200 OK")
{
    // Your file does exist
}
elseif($headers[0] == "HTTP/1.1 404 Not Found")
{
    // Your file does not exist
}
else 
{
    // Some other headers...
    highlight_string(print_r($headers,1));
}

?>


您应该使用该功能,但我猜您用错了。它是否显示警告(以及是否启用警告显示)?如果您在本地没有该文件的权限,则可以测试URL是否存在。您是在尝试检查本地文件还是外部文件?如果文件\u存在失败,则权限是问题,这肯定会失败。更重要的是,op建议他正在测试外部URL,据我所知,文件_的存在只能用于具有绝对路径的本地文件。如果要将变量传递给shell,请使用
escapeshellarg()
,以避免麻烦。
<?
$headers = get_headers("http://www.seemeagain.com/users/1000002722/gallery_1312973080.jpg");

if ($headers[0] == "HTTP/1.1 200 OK")
{
    // Your file does exist
}
elseif($headers[0] == "HTTP/1.1 404 Not Found")
{
    // Your file does not exist
}
else 
{
    // Some other headers...
    highlight_string(print_r($headers,1));
}

?>