当allow_url_fopen被禁用时,仅使用PHP使用PHP在远程服务器上的文件的URL检测文件的文件类型?

时间:2015-07-11 01:36:32

标签: php fopen remote-server

我正在构建一个PHP应用程序,它允许用户只需输入通常位于远程服务器上的图像的URL就可以将图像文件上传到服务器。

当您将图片上传到提问题屏幕时,StackOverflow也具有此功能。

我的应用程序将成为SugarCRM模块的一部分,该模块将安装在具有不同配置和软件的许多服务器上。出于这个原因,我需要尽可能灵活地构建我的应用程序并尽量考虑尽可能多的设置。

我最大的障碍是将PHP INI设置allow_url_fopen设置为false / off的服务器,因为它限制了我使用URL下载远程文件的选择。

我的问题更侧重于获取远程文件的文件类型。现在很多网站都会在网址中提供没有文件扩展名的图片,即使这样做也可能会让我感到欺骗。

目前这是应用程序获取远程服务器上文件的文件扩展名的方式......

$info = @GetImageSize($this->remote_image_url);
$mime = $info['mime'];

// What sort of image?
$fileType = substr(strrchr($mime, '/'), 1);

查看GetImageSize()的PHP文档,它说明了这个......

  

$ filename此参数指定要检索的文件   相关信息。它可以引用本地文件或(配置   允许)使用其中一个支持的流的远程文件。

(配置允许)使用其中一个支持的流

的远程文件

在服务器上关闭 allow_url_fopen 的障碍是我的噩梦!

我可以用{...}来检测allow_url_fopen的状态。

if(ini_get('allow_url_fopen')){
    return true;
}

所以我可以检测到allow_url_fopen已启用,如果是,那么我可以使用GetImageSize()来检测文件类型,当它未启用时,请确保不要调用该函数。

问题:
所以问题是如何只使用URL访问PHP INI设置为allow_url_fopen的服务器上的文件来可靠地获取远程文件的文件类型?

0 个答案:

没有答案