PHP批量检测并去除文件BOM头代码实例

    网站后台登陆的验证码不显示,我还以为是因为session没有写入权限呢,排查了一下不是目录权限问题,从网上查了说是BOM头的问题,用记事本打开的就会产生BOM头。附上清除bom头的小脚本,放到网站根目录执行就可以。

        
<?php
if (isset($_GET['dir'])) { //设置文件目录  
    $basedir = $_GET['dir'];
} else {
    $basedir = '.';
}  
 $auto = 1;
checkdir($basedir); 
 function checkdir($basedir)
{
    if ($dh = opendir($basedir)) {
        while (($file = readdir($dh)) !== false) {
            if ($file != '.' && $file != '..') {
                if (!is_dir($basedir . "/" . $file)) {
                    echo "filename: $basedir/$file " . checkBOM("$basedir/$file") . " <br>";
                } else {
                    $dirname = $basedir . "/" . $file;
                    checkdir($dirname);
                }
            }
        }
        closedir($dh);
    }
}
function checkBOM($filename)
{
    global $auto;
    $contents   = file_get_contents($filename);
    $charset[1] = substr($contents, 0, 1);
    $charset[2] = substr($contents, 1, 1);
    $charset[3] = substr($contents, 2, 1);
    if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
        if ($auto == 1) {
            $rest = substr($contents, 3);
            rewrite($filename, $rest);
            return ("<font color='red'>BOM found, automatically removed.</font>");
        } else {
            return ("<font color='red'>BOM found.</font>");
        }
    } else
        return ("BOM Not Found.");
} 
 function rewrite($filename, $data)
{
    $filenum = fopen($filename, "w");
    flock($filenum, LOCK_EX);
    fwrite($filenum, $data);
    fclose($filenum);
}
?>


在WIN2008R2的IIS7环境下安装PHP5.6

1、下载PHP5.6

在http://windows.php.net/download页面中找到VC11 x64 Non Thread Safe下载ZIP版。

 

2、将下载的压缩包解压到D盘PHP文件夹中。

 

3、复制D:\php\php.ini-development为php.ini,并用记事本打开php.ini

做如下修改:

extension_dir = "D:\php\ext" #设置php模块路径

date.timezone = PRC #设置时区为中国时区

register_globals = On #开启GET数据调用

short_open_tag = On #php支持短标签

cgi.force_redirect = 0 #开启以CGI方式运行php

fastcgi.impersonate = 1;

cgi.rfc2616_headers = 1

以下php扩展模块,根据需要选择开启,取消前面的分号为开始相应扩展模块

extension=php_curl.dll

extension=php_gd2.dll

extension=php_mbstring.dll

extension=php_exif.dll

extension=php_mysql.dll

extension=php_mysqli.dll

extension=php_sockets.dll

extension=php_xmlrpc.dll

extension=php_pdo_mysql.dll

 

- 阅读全文 -

WIN2003+IIS6+FastCGI+PHP5.4的安装配置

说明:PHP5.5已不支持win2003了,Win2003最高能安装PHP5.4

一、安装好IIS

具体安装方法可查看:http://down.chinaz.com/server/201102/11_1.htm

 

二、下载并安装IIS FastCGI

下载地址:http://www.iis.net/download/fastcgi。选择 x86或者download x86,下载下来名称为fcgisetup_1.5_x86_rtw.msi。安装后会在C:\WINDOWS\system32\inetsrv\目录下多出了5个文件fcgiconfig.js,fcgiext.dll,fcgiext.ini,fcgilicense.rtf,fcgireadme.htm

这个时候在IIS6的"WEB服务扩展"里就多出了一个FastCGI Handler
图片1.png

 

 

- 阅读全文 -

PHP中VC6、VC9、TS、NTS版本的区别与用法详解

1. VC6与VC9的区别:

VC6 版本是使用 Visual Studio 6 编译器编译的,如果你的 PHP 是用 Apache 来架设的,那你就选择 VC6 版本。  VC9 版本是使用 Visual Studio 2008 编译器编译的,如果你的 PHP 是用 IIS 来架设的,那你就选择 VC9 版本。  VC9 版本是针对 IIS 服务器的版本,没有对 APACHE 的支持,而 VC6 版本对 IIS  apache 都提供了支持 

- 阅读全文 -

PHP批量修改文件名

缘由:

    上一篇是说随机或取图片名称,我发现图片名称参差不齐,进一步改良。

批量改名,修改成avatar_加时间戳 加 5位随机数。

<?php  
  $dir = "D:\\wamp\\www\\phpgaoyipin\\branches\\local\\data\\upload\\o2o\\custom_avatar\\";  //要获取的目录
  //先判断指定的路径是不是一个文件夹
  if (is_dir($dir)){
    if ($dh = opendir($dir)){
      while (($file = readdir($dh))!= false){
        //文件名的全路径 包含文件名
        $filePath = $dir.$file;
        $new_filePath = $dir.'avatar_'.time().mt_rand( 10000, 99999 ).'.jpg';
        @rename( $filePath, $new_filePath );
      }
        closedir($dh);
    }
  }
?>

- 阅读全文 -