Archive for the ‘php’ Category

写了个简单的文件上传类,能同时上传多个文件。

下面是类

  1. < ?php
  2. /*
  3. * 文件上传
  4. * site:http://wangtao.name
  5. */
  6. class uploadFile
  7. {
  8.     private $files = array();
  9.     private $uplodName = '';
  10.     private $folder = '';
  11.     function __construct($files,$uplodName='',$folder = '')
  12.     {
  13.         $j = 0;
  14.         foreach($files['name'] as $value)
  15.         {
  16.             $newFiles[$value] = array(
  17.             "name" => $files['name'][$j],
  18.             "type" => $files['name'][$j],
  19.             "tmp_name" => $files['tmp_name'][$j],
  20.             "error" => $files['error'][$j],
  21.             "size" => $files['size'][$j]
  22.             );
  23.             $j ++;
  24.         }
  25.        
  26.        
  27.         $this-> files = $newFiles;
  28.         $this-> uplodName = $uplodName;
  29.         $this-> folder = $folder;
  30.     }
  31.    
  32.     /*
  33.      * 保存文件
  34.      */
  35.     function saveFiles()
  36.     {
  37.         if (empty($this -> files))
  38.         {
  39.             return array();
  40.         }
  41.         else
  42.         {
  43.             $fileInfo = array();
  44.             foreach ($this -> files as $file)
  45.             {
  46.                 $fileInfo[] = self::file($file,$this -> uplodName ,$this -> folder);
  47.             }
  48.             return $fileInfo;
  49.         }
  50.     }
  51.    
  52.     /*
  53.      * 传入一个文件数组;
  54.      * 上传文件成功后返回数组;
  55.      * $file: 从浏览器中获得的文件数组
  56.      * $uplodName:为保存到文件名,默认为空
  57.      * $folder: 上传后保存的目录,默认为空
  58.      */
  59.     static function file($file, $uplodName = '', $folder = '')
  60.     {
  61.         #判断文件数组是否正确
  62.         if($file['error'] > 0)
  63.         {
  64.             echo 'Error: ' . $file['error'];           
  65.         }
  66.         #生成上传后的文件路径
  67.         if(empty($uplodName))
  68.         {
  69.             $fileName = self::createFolder(date('Y-m')) . self::getFilename() . '.' . self::getFileSuffixName($file['name']);
  70.         }
  71.         else
  72.         {
  73.             $fileName = self::createFolder($folder) . $uplodName . '.' . self::fileAdorn($file['name']);
  74.             if(file_exists($fileName))
  75.             {
  76.                 echo  '相同的文件名存在';
  77.                 return false;
  78.             }
  79.         }
  80.        
  81.         #上传成功返回数组
  82.         if(move_uploaded_file($file['tmp_name'],$fileName))
  83.         {
  84.             return $fileName;
  85.         }
  86.         else
  87.         {
  88.             return false;
  89.         }
  90.     }
  91.    
  92.     #创建目录
  93.     static private function createFolder($folder = '')
  94.     {
  95.        
  96.         if(empty($folder))
  97.         {
  98.             #默认路径
  99.             $path = date('Y-m');
  100.         }
  101.         else
  102.         {
  103.             $path = $folder;
  104.         }
  105.         if(file_exists($path))
  106.         {}
  107.         else
  108.         {
  109.             mkdir($path, '0777');
  110.         }
  111.        
  112.         return $path . '/';
  113.     }
  114.    
  115.     /**
  116.      * 获取一个的文件名
  117.      * @param $prefix 文件名的前缀
  118.      */
  119.     static function getFilename($prefix = '')
  120.     {
  121.         $s = explode(" ",microtime());
  122.         $s = $s[1].substr($s[0],2,-1);
  123.         $s .= mt_rand();
  124.         return $prefix?$prefix.$s:$s;
  125.     }
  126.    
  127.     /*
  128.      * 获得文件后缀
  129.      * $fileName:文件名
  130.      */
  131.     static function getFileSuffixName($fileName)
  132.     {
  133.         $arr = explode('.',$fileName);
  134.         $adorn = array_pop($arr);
  135.         return $adorn;
  136.     }
  137. }

简单的演示

Read the rest of this page »

ECSHOP中的“站点地图”设置是使用 Feed 文件 sitemap.xml 通知 Google、Yahoo! 以及 Microsoft 等 Crawler(爬虫)网站上哪些文件需要索引、这些文件的最后修订时间、更改频度、文件位置、相对优先索引权,这些信息将帮助他们建立索引范围和索引的行为习惯。
现:“生成站点地图失败,请检查站点根目录、/data/目录是否允许写入。”错误。

我们首先检查根目录与/data/目录是否允许写入。

设置方法如下:

Read the rest of this page »

系统的环境是:windows 7 32 位,IIS 7 ,PHP 5.3.2 , MYSql 5.1。

错误可能是PHP配置环境的问题。与大家共同讨论下。

安装ecshop 2.7.1时,检查安装环境后,进入下一步时就出现了如下错误:

PHP Warning: date_default_timezone_get() [function.date-default-timezone-get]: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘UTC’ for ’8.0/no DST’ instead in

IE下才有下面提示。FF下很奇怪的显示“未找到文件”。

根据错误提示:找到install\includes\lib_installer.php 第 223 行。将“$local_timezone = date_default_timezone_get();”改为了“$local_timezone = ‘’”。

这个错误,我想可能是我的PHP配置不正确的原因吧。

解决这个错误后,接着下一步。则又出现了“XmlHttpRequest status: [500] Unknow status.”,拦住了我们安装成功之路。

我们在安装细节里看到“创建数据库…………成功”,可能因为一些原因程序中止了安装。

确认提醒窗口,再次单击“立即安装”,虽然也出现了“XmlHttpRequest status: [500] Unknow status.”,但安装细节里提示“安装数据…………成功”。

之后这个错误一直卡着不能正常完成安装,重复多少次“立即安装”也无济于事,其实到这一卡ecshop已经安装完成了,但还是不能打开,因为data文件夹里缺少install.lock,所以才会一直提示安装。

我们可以自己给新健一个install.lock文件:在data文件夹里新健一文本文件,输入其内容为“ECSHOP INSTALLED”。然后再改名为”install.lock”就可以了。

最后再次感叹:wordpress安装就是方便,除了有时乱码,其它基本没问题。

前些天360安全卫生提醒我PHP更新到了5.3.2,今天放假,就试着安装。

系统:windows 7 旗舰版 32位;

IIS: IIS 7

PHP:PHP 5.3.2

MYSQL: MySQL 5.4

下载http://windows.php.net/downloads/releases/php-5.3.2-Win32-VC9-x86.zip。这个PHP包比较好,适合于在IIS下安装。

安装后我解压在C:根目录下。为c:/php。

然后打开windows 7 系统属性里的“高级系统设置”–“环境变量”。

修改“用户变量”和“系统变量”中的”Path”值:分别增加c:/php;(根据解你压PHP的位置而定,目的是让系统找到这两个目录的文件)。

php5.3.1不再有php5isapi.dll这一文件。不能像5.2版本那样使用ISAPI筛选器执行PHP文件了。而提供了CGI/FastCGI方式的支持。

接下来,打开IIS管理器,然后选择“添加模板映射”,

出现提示,选择“是”。

接着就是php.ini的配置设置如下:

fastcgi.impersonate = 1

cgi.fix_pathinfo = 1

cgi.force_redirect = 0

extension_dir=”C:\php\ext”

date.timezone = “Asia/Shanghai”

然后再打开一些常用的扩展,比如MYSQL。搜索“extension”,去掉相应扩展的“;”就可以了。

比如将“;extension=php_bz2.dll”改成“extension=php_bz2.dll”

关于错误:安装后会出现各种错误。这是正常的。最多的是CGI程序意外终结。

我们打开CMD,在输入php回车,如果出现“’php’ 不是内部或外部命令,也不是可运行的程序或批处理文件。”说明PHP相关目录没有加入系统环境变量中。

如果出现找不到“OCI.dll”文件之类的。说明本机上没有安装oracle却把oracle数据库扩展打开了,需要把包含oci扩展前加上”;”,以关闭扩展。

PS:

今天新试装,百度很久没找有用东西,才自己写了一篇。新试装也有很多不清楚的。更多可以访问http://php.iis.net,更多windows PHP下载可访问http://windows.php.net/download/。

如果连接MySQL出现了“由于连接方在一段时间后没有正确答复或连接的主机没有反应”提示,应该修改“C:\Windows\System32\drivers\etc”下的hosts文件,添加一条“127.0.0.1 localhost”。