【发布时间】:2012-02-23 07:12:39
【问题描述】:
我有一个简单的函数可以在文件旁边输出一个文件类型的图标,但由于某种原因,file_exists() 总是返回 false。我已经输出了正在生成的路径,它显然存在于“default.png”中。我在这里遗漏了什么吗?
我尝试过使用 URL 和文件路径 - 两者总是返回 false。
我什至将所有文件权限设置为 777 以测试这是否是问题所在,但这不起作用。
/**
* Displays the logo for the file type passed to the function
*
* @param required string $file_type The file type to display an icon for
*/
function show_file_type($file_type){
$file_types_folder = get_bloginfo('template_directory').'/includes/images/file_types/';
if(file_exists($file_types_folder.$file_type.'.png')) :
$file_type_image = $file_types_folder.$file_type.'.png';
elseif(file_exists($file_types_folder.'default.png')) :
$file_type_image = $file_types_folder.'default.png';
else :
return false;
endif;
echo '<img src="'.$file_type_image.'" width="20"/>';
}
【问题讨论】:
-
您是否确保您的 apache 进程可以读取包含该文件的目录?
-
尝试验证
get_bloginfo的输出。如果 template_directory 不是绝对的,它可能不起作用。还可以尝试手动检查/var/www/myblog/includes/...等,具体取决于您的 apache 设置,看看是否解决了您的问题。 -
$file_types_folder 是相对于网络服务器根目录还是文件系统根目录?
-
给我们一个例子来说明 $file_type 可能是什么
-
显然,
$file_type实际上是图像的文件名,您将使用它作为 img 标签的 src。也尝试使用此file_exists(realpath($file_types_folder.$file_type.'.png'))您可能会丢失一些 URL 重写以有效地使用绝对路径作为图像的 URI 字符串来指向服务器上图像的绝对路径。例如,/var/includes/images/file_types/default.png将被翻译成http://{domain}/{path}/var/includes/images/file_types/default.png必须为此重写。
标签: php file-exists