PHP - is_file 说文件不存在但确实存在
PHP - is_file says file does not exists but it does
我正在尝试将 3 个 pdf 文件附加到电子邮件中,我遇到的问题是 is_file 对前两个文件给出了错误,但第三个文件有效。这些文件来自一个文本框,展开如下:
$pdfs = explode("\n", $string);
然后我将它放在一个 foreach 循环中以附加到这样的电子邮件中:
foreach($pdfs as $pdf) {
if (is_file(JPATH_ROOT . $pdf)) {
$mail['attachment'][] =
array('name' => basename($pdf), 'file' => JPATH_ROOT . $pdf);
}
}
当我 运行 此代码时,我只附加了第三个 pdf 文件,但是如果我删除 is_file()
它们在数组中但不会附加到已发送的电子邮件。
所以结果是:
[attachment] => Array
(
[0] => Array
(
[name] => pdf_file_1.pdf
[file] => /home/psinke/domains/*****/public_html/pdf_file_1.pdf
)
[1] => Array
(
[name] => pdf_file_2.pdf
[file] => /home/psinke/domains/*****/public_html/pdf_file_2.pdf
)
[2] => Array
(
[name] => pdf_file_3.pdf
[file] => /home/psinke/domains/*****/public_html/pdf_file_3.pdf
)
)
但是前两个文件没有附加到发送的电子邮件中。
可能在输入数据中分隔这些条目的换行符不仅仅是 \n ...所以您可能在前两个条目的末尾留下了 \r,这当然使得 PHP找不到那些文件。
第三个文件不会有这个问题,因为在那一行之后可能没有换行符了。
The files come from a textbox
假设您指的是 HTML textarea
元素 - 所有现代浏览器都会发送 \r\n 作为文本区域中的换行符 - 所以如果您只从那里获取内容,则在"\r\n"
应该可以。如果您不确定事先使用的确切换行符格式,您也可以使用 preg_split 解决方案,如下所示,
我正在尝试将 3 个 pdf 文件附加到电子邮件中,我遇到的问题是 is_file 对前两个文件给出了错误,但第三个文件有效。这些文件来自一个文本框,展开如下:
$pdfs = explode("\n", $string);
然后我将它放在一个 foreach 循环中以附加到这样的电子邮件中:
foreach($pdfs as $pdf) {
if (is_file(JPATH_ROOT . $pdf)) {
$mail['attachment'][] =
array('name' => basename($pdf), 'file' => JPATH_ROOT . $pdf);
}
}
当我 运行 此代码时,我只附加了第三个 pdf 文件,但是如果我删除 is_file()
它们在数组中但不会附加到已发送的电子邮件。
所以结果是:
[attachment] => Array
(
[0] => Array
(
[name] => pdf_file_1.pdf
[file] => /home/psinke/domains/*****/public_html/pdf_file_1.pdf
)
[1] => Array
(
[name] => pdf_file_2.pdf
[file] => /home/psinke/domains/*****/public_html/pdf_file_2.pdf
)
[2] => Array
(
[name] => pdf_file_3.pdf
[file] => /home/psinke/domains/*****/public_html/pdf_file_3.pdf
)
)
但是前两个文件没有附加到发送的电子邮件中。
可能在输入数据中分隔这些条目的换行符不仅仅是 \n ...所以您可能在前两个条目的末尾留下了 \r,这当然使得 PHP找不到那些文件。
第三个文件不会有这个问题,因为在那一行之后可能没有换行符了。
The files come from a textbox
假设您指的是 HTML textarea
元素 - 所有现代浏览器都会发送 \r\n 作为文本区域中的换行符 - 所以如果您只从那里获取内容,则在"\r\n"
应该可以。如果您不确定事先使用的确切换行符格式,您也可以使用 preg_split 解决方案,如下所示,