为什么 php 不能正确检测 pdf mime 类型 (wkhtmltopdf)?
Why doesn't php correctly detect a pdf mime type (wkhtmltopdf)?
问题。
我使用 wkhtmltopdf 创建了一个 pdf,但 php 无法将其识别为 pdf。当我查找 mime 类型时,它 returns unknown
.
我怎样才能:
- 希望通过设置修复 wkhtmltopdf
- 调整 php 的 pdf 文件识别算法,将其视为 pdf。
代码
PHP 版本 5.6
阿帕奇 2.4
Windows 10 专业版
文件信息 1.0.5
wkhtmltopdf“0.12.4(带补丁的 qt)”
$file_info = new finfo(FILEINFO_MIME_TYPE);
return $file_info->file($file_path); // returns "/unknown"
重现。
我不能在这里附上 pdf,只能根据主页上的说明 运行 wkhtmltopdf 工具:wkhtmltopdf http://google.com google.pdf
然后 运行 上面的 php 代码它。
这里是环境,我运行它就在:
OS: Win 10 专业版
Apache: Apache/2.4.27 (Win32) OpenSSL/1.0.2l PHP/7.1.9
PHP: 7.1.9
文件信息: 1.0.5
WkHTMLtoPDF: wkhtmltox-0.12.4_msvc2015
我 运行 CMD in Admin mode
上的命令:
C:\Program Files\wkhtmltopdf\bin>wkhtmltopdf http://google.com google.pdf
和 运行 以下 PHP 代码(将 google.pdf
移动到我在 htdocs 中的目录后):
$file_path = "google.pdf";
$file_info = new finfo(FILEINFO_MIME_TYPE);
var_dump($file_info->file($file_path));
输出是(成功):
C:\xampp\htdocs\htmlpdf\test.php:5:string 'application/pdf' (length=15)
如果这对您不起作用,我建议您采用以下方法:
1) 使用mime_content_type
,表示为deprecated
$file_path = "google.pdf";
var_dump(mime_content_type($file_path));
2) 使用 finfo_open
,它与 new finfo
相同,但仍然值得一试:
$file_path = "google.pdf";
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimetype = finfo_file($finfo, $file_path);
finfo_close($finfo);
var_dump($mimetype);
3) 或者,如果您不介意使用外部库和后备依赖项,请尝试:
问题。
我使用 wkhtmltopdf 创建了一个 pdf,但 php 无法将其识别为 pdf。当我查找 mime 类型时,它 returns unknown
.
我怎样才能:
- 希望通过设置修复 wkhtmltopdf
- 调整 php 的 pdf 文件识别算法,将其视为 pdf。
代码
PHP 版本 5.6
阿帕奇 2.4
Windows 10 专业版
文件信息 1.0.5
wkhtmltopdf“0.12.4(带补丁的 qt)”
$file_info = new finfo(FILEINFO_MIME_TYPE);
return $file_info->file($file_path); // returns "/unknown"
重现。
我不能在这里附上 pdf,只能根据主页上的说明 运行 wkhtmltopdf 工具:wkhtmltopdf http://google.com google.pdf
然后 运行 上面的 php 代码它。
这里是环境,我运行它就在:
OS: Win 10 专业版
Apache: Apache/2.4.27 (Win32) OpenSSL/1.0.2l PHP/7.1.9
PHP: 7.1.9
文件信息: 1.0.5
WkHTMLtoPDF: wkhtmltox-0.12.4_msvc2015
我 运行 CMD in Admin mode
上的命令:
C:\Program Files\wkhtmltopdf\bin>wkhtmltopdf http://google.com google.pdf
和 运行 以下 PHP 代码(将 google.pdf
移动到我在 htdocs 中的目录后):
$file_path = "google.pdf";
$file_info = new finfo(FILEINFO_MIME_TYPE);
var_dump($file_info->file($file_path));
输出是(成功):
C:\xampp\htdocs\htmlpdf\test.php:5:string 'application/pdf' (length=15)
如果这对您不起作用,我建议您采用以下方法:
1) 使用mime_content_type
,表示为deprecated
$file_path = "google.pdf";
var_dump(mime_content_type($file_path));
2) 使用 finfo_open
,它与 new finfo
相同,但仍然值得一试:
$file_path = "google.pdf";
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimetype = finfo_file($finfo, $file_path);
finfo_close($finfo);
var_dump($mimetype);
3) 或者,如果您不介意使用外部库和后备依赖项,请尝试: