【发布时间】:2015-02-08 22:00:45
【问题描述】:
PHPMailer 检查每个附件的is_file(在addAttachment 函数中,在class.phpmailer.php 文件中):
if (!@is_file($path)) {
throw new phpmailerException($this->lang('file_access') . $path, self::STOP_CONTINUE);
}
我的问题是 is_file 只能提供文件的完整本地路径,而不是 URL:
is_file('C:/wamp/www/myFolder/rocks.png'); //True
is_file('http://localhost/myFolder/rocks.png'); //False :(
所以我无法从远程服务器附加任何文件。
我做错了什么??可能是权限问题?
编辑:
我知道还有其他方法可以检查文件是否存在。
但是is_file在PhpMailer library中,我宁愿不去碰它,我想知道是否有可能使用它的方法让它工作。
谢谢。
【问题讨论】:
-
使用
get_headers检查远程文件是否存在比较便宜。 -
@Jordy 这正是我在说的。
-
@baldrs:我知道有更好的方法来检查文件是否存在,但这是写在 PhpMailer 函数中的。我会知道它是如何工作的。还是 PhpMailer 问题?
-
提示 从 PHP 5.0.0 开始,这个函数也可以与一些 URL 包装器一起使用。请参阅支持的协议和包装器以确定哪些包装器支持 stat() 系列功能。
-
HTTP 没有文件与目录的概念,因此 is_file() / is_dir() 结果未定义...