欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

linux下增加peclfileinfo

php5.5怎样启用php_fileinfo支持

php5.5默认启动fileinfo,但是在云主机上安装了CentOS6 64位 WDCP php5.5 MySQL5.5,安装程序时,提示需要开启php_fileinfo支持
请问:php5.5怎样启用php_fileinfo支持呢?
匿名 | 浏览 928 次
发布于2016-04-13 14:01最佳答案
 
fileinfo 是php的一个扩展,你需要在安装时候查看是否有这个扩展包,如果有,那就在php.ini写 extension=php_fileinfo.dll  就可以了,如果有这一行,就删除前面的分号
 
追问
是linx系统的,在官方查到说php5.5是默认开启fileinfo的,但是在php.ini写入相应的代码还是不行,如果要安装扩展,那应该怎么操作呢?
 
追答
linux开启以后需要重启php,http://biancheng.dnbcw.info/php/251334.html


来自  https://zhidao.baidu.com/question/1832899088095037740.html

来CU这里长时间了,很少在里面发表文章,主要是我还是菜鸟,没有什么可发表的;再则,是自己的太懒了。所以就写一个自己的BLOG,写一写自己碰到的问题,希望别人可以看到少走弯路。
   
     最近在学习PHP,所以写一下碰到的问题吧。关于PHP对上传文件类型的检测,相信很多人都做了。做的简单的直接就是不符合扩展名的不能上传。这个也说不上好与不好,只是看你的需求,如果是让用户上传图片然后再显示,别人上传EXE文件改成JPG的,你的网页在显示的时候就是出现大X,影响效果。
    有人使用的是$_FILE['uploadfile']['type']来检测,原来是根据浏览器发过来的文件类型做的检测,不准确,和上面的一样,如果用户把EXE的扩展名改成JPG的,浏览器也会认为是IMAGE/JPEG格式的,所以
$_FILES['uploadfile']['type']也变成IMAGE/JPEG的。绕过了你的检测。
   再有就是使用PECL里的fileinfo来检测了。
   fileinfo的安装,我使用的是GENTOO,直接emerge -av pecl-fileinfo,GENTOO真是强大,把pecl的扩展都放到了portage里。你也可以直接去pecl.php.net下载源码编译。方法也很简单。
    #tar zxvf fileinfo-XXX.tar.gz
    #cd fileinfo-XXX
    #phpize
    #./configure
    #make
    #cp modules/fileinfo.so /usr/local/php/modules (你PHP的modules的目录。在PHP.INI里设置的。)
    #修改PHP.INI增加extension=fileinfo.so
    
    
使用的的时候一直找不到magic.mime,还有MAIGC,很不解,我的系统里根本没有这两个文件。看官方的文档也没有清楚的说明。有的说是/etc/magic,有的说是/usr/share/file/magic。我的系统里只有/usr/share/misc/file/magic.mgc。有一个在WINDOWS下的使用的朋友是用的sourceforge上的file-bin.zip里的magic 和magic.mime。我下载下来用,发现可以用,不过所有的文件都认成application/otect-stream,肯定不对。又找到了官网上看到这样的话。
   
magic_file
 

Name of a magic database file, usually something like /path/to/magic.mime. If not specified, the MAGIC environment variable is used. If this variable is not set either, /usr/share/misc/magic is used by default. A .mime and/or .mgc suffix is added if needed

看到了有一个.mgc扩展名。呵呵。对了就是/usr/share/misc/file/magic.mgc。使用之后没有问题。
在使用过程中还碰到了一个问题。fileinfo可以使用面向对像和面向过程的写法。
<?php
$finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic.mgc"); 
if (!$finfo) {
    echo "Opening fileinfo database failed";
    exit();
}
$filename = "/usr/local/something.txt";
echo $finfo->file($filename);
$finfo->close();
?>
在面向对象的最后$finfo->close()的时候总是出现错误。不解,也许是我写错了,不知道你们碰到过没有。
使用下面的面向过程的就可以使用close()

<?php
$finfo = finfo_open(FILEINFO_MIME, "/usr/share/misc/file/magic.mgc"); 
if (!$finfo) {
    echo "Opening fileinfo database failed";
    exit();
}
$filename = "/usr/local/something.txt";
echo finfo_file($finfo, $filename);
finfo_close($finfo);
?>
上面的写法就没有问题。搞不懂是什么问题。让高手去解决吧!
我想说的是。碰到问题多看官方的文档,要仔细的看,会发现解决问题的办法。如果你还找不到magic.mgc
就locate magic.mgc ,把找到的文件放里去,试试就知道了。
不要嫌我说的罗嗦,这个只是我的一个经历,希望对大家有帮助。

来自 
http://biancheng.dnbcw.info/php/251334.html


0

php7编译时没有开启fileinfo扩展。请问如何不重新编译开启phpinfo。
1尝试pecl安装:
pecl install fileinfo

downloading Fileinfo-1.0.4.tgz ... Starting to download
Fileinfo-1.0.4.tgz (5,835 bytes) .....done: 5,835 bytes 3 source
files, building running: phpize Cannot find config.m4. Make sure that
you run '/usr/local/php/bin/phpize' in the top level source directory
of the module

ERROR: `phpize' failed

2尝试手动编译

wget https://pecl.php.net/get/File... tar zxvf
Fileinfo-1.0.1.tgz ./configure
--with-php-config=/usr/local/php/bin/php-config make && make install

但是在make的时候出错了

/bin/sh /home/download/Fileinfo-1.0.4/libtool --mode=compile cc -I.
-I/home/download/Fileinfo-1.0.4 -DPHP_ATOM_INC -I/home/download/Fileinfo-1.0.4/include -I/home/download/Fileinfo-1.0.4/main -I/home/download/Fileinfo-1.0.4 -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /home/download/Fileinfo-1.0.4/fileinfo.c -o fileinfo.lo cc -I. -I/home/download/Fileinfo-1.0.4 -DPHP_ATOM_INC -I/home/download/Fileinfo-1.0.4/include -I/home/download/Fileinfo-1.0.4/main -I/home/download/Fileinfo-1.0.4 -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /home/download/Fileinfo-1.0.4/fileinfo.c -fPIC -DPIC -o
.libs/fileinfo.o /home/download/Fileinfo-1.0.4/fileinfo.c:159: error:
expected ‘)’ before ‘*’ token
/home/download/Fileinfo-1.0.4/fileinfo.c:171: error: expected ‘=’,
‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘fileinfo_functions’
/home/download/Fileinfo-1.0.4/fileinfo.c: In function
‘zm_startup_finfo’: /home/download/Fileinfo-1.0.4/fileinfo.c:195:
error: ‘finfo_resource_destructor’ undeclared (first use in this
function) /home/download/Fileinfo-1.0.4/fileinfo.c:195: error: (Each
undeclared identifier is reported only once
/home/download/Fileinfo-1.0.4/fileinfo.c:195: error: for each function
it appears in.) /home/download/Fileinfo-1.0.4/fileinfo.c: At top
level: /home/download/Fileinfo-1.0.4/fileinfo.c:221: error:
‘fileinfo_functions’ undeclared here (not in a function)
/home/download/Fileinfo-1.0.4/fileinfo.c: In function
‘zif_finfo_open’: /home/download/Fileinfo-1.0.4/fileinfo.c:269: error:
‘struct _php_core_globals’ has no member named ‘safe_mode’
/home/download/Fileinfo-1.0.4/fileinfo.c:269: error:
‘CHECKUID_CHECK_FILE_AND_DIR’ undeclared (first use in this function)
/home/download/Fileinfo-1.0.4/fileinfo.c: In function
‘zif_finfo_close’: /home/download/Fileinfo-1.0.4/fileinfo.c:310:
error: expected expression before ‘struct’
/home/download/Fileinfo-1.0.4/fileinfo.c:312: warning: passing
argument 1 of ‘zend_list_delete’ makes pointer from integer without a
cast /usr/local/php/include/php/Zend/zend_list.h:59: note: expected
‘struct zend_resource *’ but argument is of type ‘int’
/home/download/Fileinfo-1.0.4/fileinfo.c: In function
‘zif_finfo_set_flags’: /home/download/Fileinfo-1.0.4/fileinfo.c:336:
error: expected expression before ‘struct’
/home/download/Fileinfo-1.0.4/fileinfo.c: In function
‘_php_finfo_get_type’: /home/download/Fileinfo-1.0.4/fileinfo.c:364:
error: expected expression before ‘struct’
/home/download/Fileinfo-1.0.4/fileinfo.c:375: warning: passing
argument 2 of ‘php_stream_locate_url_wrapper’ from incompatible
pointer type /usr/local/php/include/php/main/php_streams.h:565: note:
expected ‘const char ’ but argument is of type ‘char 
/home/download/Fileinfo-1.0.4/fileinfo.c:382: error:
‘ENFORCE_SAFE_MODE’ undeclared (first use in this function)
/home/download/Fileinfo-1.0.4/fileinfo.c:387:64: error: macro
"php_stream_copy_to_mem" passed 4 arguments, but takes just 3
/home/download/Fileinfo-1.0.4/fileinfo.c:387: error:
‘php_stream_copy_to_mem’ undeclared (first use in this function)
/home/download/Fileinfo-1.0.4/fileinfo.c:421:27: error: macro
"RETURN_STRING" passed 2 arguments, but takes just 1
/home/download/Fileinfo-1.0.4/fileinfo.c:421: error: ‘RETURN_STRING’
undeclared (first use in this function) make: * [fileinfo.lo] Error
1

HELP

 

1个回答

0

用这种方式安装:
不需要去下载扩展,只需要进入此fileinfo目录(我这里有多个版本5.6,7版本)
比如进入5.6版本目录cd /usr/local/src/lnmp1.2-full/src/php-5.6.9/ext/fileinfo

/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
/usr/local/php/etc/php.ini 添加扩展:
extension=fileinfo.so



来自 https://segmentfault.com/q/1010000006625915


普通分类: