本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/networld2002/archive/2009/04/23/4103407.aspx
搜索 AddDefaultCharset ISO-8859-1 將其改為
AddDefaultCharset GB2312
5.配置php
#這是每個(gè)腳本可以消耗的時(shí)間,單位也是秒
max_input_time = 60
#這個(gè)是腳本運(yùn)行最大消耗的內(nèi)存,最好設(shè)為16M以上,有的程序要求,比如openads
memory_limit = 16M
#上載文件的最大許可大小,一般post大小>upload_max_filesize。比如我的設(shè)置:
post_max_size = 300M
upload_max_filesize = 250M
6.至此,配置完成大半。
mysql與zend只要按需安裝即可。裝完后重啟apache服務(wù)器即可。
7.最后推薦個(gè)好東西,apache的monitor.exe,可以控制apache、myql、IIS、sql server等服務(wù)器開關(guān)。好東西,我找了挺久的。感謝原作者,抱歉忘了大名
http://www.1thz.cn/apachemonitor.exe
package com.why.ftp;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
/**
* ftp上傳,下載
* @author why 2009-07-30
*
*/
public class FtpUtil {
private String ip = "";
private String username = "";
private String password = "";
private int port = -1;
private String path = "";
FtpClient ftpClient = null;
OutputStream os = null;
FileInputStream is = null;
public FtpUtil(String serverIP, String username, String password) {
this.ip = serverIP;
this.username = username;
this.password = password;
}
public FtpUtil(String serverIP, int port, String username, String password) {
this.ip = serverIP;
this.username = username;
this.password = password;
this.port = port;
}
/**
* 連接ftp服務(wù)器
*
* @throws IOException
*/
public boolean connectServer(){
ftpClient = new FtpClient();
try {
if(this.port != -1){
ftpClient.openServer(this.ip,this.port);
}else{
ftpClient.openServer(this.ip);
}
ftpClient.login(this.username, this.password);
if (this.path.length() != 0){
ftpClient.cd(this.path);// path是ftp服務(wù)下主目錄的子目錄
}
ftpClient.binary();// 用2進(jìn)制上傳、下載
System.out.println("已登錄到\"" + ftpClient.pwd() + "\"目錄");
return true;
}catch (IOException e){
e.printStackTrace();
return false;
}
}
/**
* 斷開與ftp服務(wù)器連接
*
* @throws IOException
*/
public boolean closeServer(){
try{
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
if (ftpClient != null) {
ftpClient.closeServer();
}
System.out.println("已從服務(wù)器斷開");
return true;
}catch(IOException e){
e.printStackTrace();
return false;
}
}
/**
* 檢查文件夾在當(dāng)前目錄下是否存在
* @param dir
* @return
*/
private boolean isDirExist(String dir){
String pwd = "";
try {
pwd = ftpClient.pwd();
ftpClient.cd(dir);
ftpClient.cd(pwd);
}catch(Exception e){
return false;
}
return true;
}
/**
* 在當(dāng)前目錄下創(chuàng)建文件夾
* @param dir
* @return
* @throws Exception
*/
private boolean createDir(String dir){
try{
ftpClient.ascii();
StringTokenizer s = new StringTokenizer(dir, "/"); //sign
s.countTokens();
String pathName = ftpClient.pwd();
while(s.hasMoreElements()){
pathName = pathName + "/" + (String) s.nextElement();
try {
ftpClient.sendServer("MKD " + pathName + "\r\n");
} catch (Exception e) {
e = null;
return false;
}
ftpClient.readServerResponse();
}
ftpClient.binary();
return true;
}catch (IOException e1){
e1.printStackTrace();
return false;
}
}
/**
* ftp上傳
* 如果服務(wù)器段已存在名為filename的文件夾,該文件夾中與要上傳的文件夾中同名的文件將被替換
*
* @param filename 要上傳的文件(或文件夾)名
* @return
* @throws Exception
*/
public boolean upload(String filename){
String newname = "";
if(filename.indexOf("/") > -1){
newname = filename.substring(filename.lastIndexOf("/") + 1);
}else{
newname = filename;
}
return upload(filename, newname);
}
/**
* ftp上傳
* 如果服務(wù)器段已存在名為newName的文件夾,該文件夾中與要上傳的文件夾中同名的文件將被替換
*
* @param fileName 要上傳的文件(或文件夾)名
* @param newName 服務(wù)器段要生成的文件(或文件夾)名
* @return
*/
public boolean upload(String fileName, String newName){
try{
String savefilename = new String(fileName.getBytes("ISO-8859-1"), "GBK");
File file_in = new File(savefilename);//打開本地待長傳的文件
if(!file_in.exists()){
throw new Exception("此文件或文件夾[" + file_in.getName() + "]有誤或不存在!");
}
if(file_in.isDirectory()){
upload(file_in.getPath(),newName,ftpClient.pwd());
}else{
uploadFile(file_in.getPath(),newName);
}
if(is != null){
is.close();
}
if(os != null){
os.close();
}
return true;
}catch(Exception e){
e.printStackTrace();
System.err.println("Exception e in Ftp upload(): " + e.toString());
return false;
}finally{
try{
if(is != null){
is.close();
}
if(os != null){
os.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
/**
* 真正用于上傳的方法
* @param fileName
* @param newName
* @param path
* @throws Exception
*/
private void upload(String fileName, String newName,String path) throws Exception{
String savefilename = new String(fileName.getBytes("ISO-8859-1"), "GBK");
File file_in = new File(savefilename);//打開本地待長傳的文件
if(!file_in.exists()){
throw new Exception("此文件或文件夾[" + file_in.getName() + "]有誤或不存在!");
}
if(file_in.isDirectory()){
if(!isDirExist(newName)){
createDir(newName);
}
ftpClient.cd(newName);
File sourceFile[] = file_in.listFiles();
for(int i = 0; i < sourceFile.length; i++){
if(!sourceFile[i].exists()){
continue;
}
if(sourceFile[i].isDirectory()){
this.upload(sourceFile[i].getPath(),sourceFile[i].getName(),path+"/"+newName);
}else{
this.uploadFile(sourceFile[i].getPath(),sourceFile[i].getName());
}
}
}else{
uploadFile(file_in.getPath(),newName);
}
ftpClient.cd(path);
}
/**
* upload 上傳文件
*
* @param filename 要上傳的文件名
* @param newname 上傳后的新文件名
* @return -1 文件不存在 >=0 成功上傳,返回文件的大小
* @throws Exception
*/
public long uploadFile(String filename, String newname) throws Exception{
long result = 0;
TelnetOutputStream os = null;
FileInputStream is = null;
try {
java.io.File file_in = new java.io.File(filename);
if(!file_in.exists())
return -1;
os = ftpClient.put(newname);
result = file_in.length();
is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while((c = is.read(bytes)) != -1){
os.write(bytes, 0, c);
}
}finally{
if(is != null){
is.close();
}
if(os != null){
os.close();
}
}
return result;
}
/**
* 從ftp下載文件到本地
*
* @param filename 服務(wù)器上的文件名
* @param newfilename 本地生成的文件名
* @return
* @throws Exception
*/
public long downloadFile(String filename, String newfilename){
long result = 0;
TelnetInputStream is = null;
FileOutputStream os = null;
try{
is = ftpClient.get(filename);
java.io.File outfile = new java.io.File(newfilename);
os = new FileOutputStream(outfile);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
result = result + c;
}
}catch (IOException e){
e.printStackTrace();
}finally{
try {
if(is != null){
is.close();
}
if(os != null){
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
/**
* 取得相對于當(dāng)前連接目錄的某個(gè)目錄下所有文件列表
*
* @param path
* @return
*/
public List getFileList(String path){
List list = new ArrayList();
DataInputStream dis;
try {
dis = new DataInputStream(ftpClient.nameList(this.path + path));
String filename = "";
while((filename = dis.readLine()) != null){
list.add(filename);
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
public static void main(String[] args){
FtpUtil ftp = new FtpUtil("133.224.202.2","tstbill","tstbill");
ftp.connectServer();
boolean result = ftp.upload("C:/test_why", "test_why/test");
System.out.println(result?"上傳成功!":"上傳失敗!");
List list = ftp.getFileList("test_why/test");
for(int i=0;i<list.size();i++){
String name = list.get(i).toString();
System.out.println(name);
}
ftp.closeServer();
/**
FTP遠(yuǎn)程命令列表
USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT
PASS PASV STOR REST CWD STAT RMD XCUP OPTS
ACCT TYPE APPE RNFR XCWD HELP XRMD STOU AUTH
REIN STRU SMNT RNTO LIST NOOP PWD SIZE PBSZ
QUIT MODE SYST ABOR NLST MKD XPWD MDTM PROT
在服務(wù)器上執(zhí)行命令,如果用sendServer來執(zhí)行遠(yuǎn)程命令(不能執(zhí)行本地FTP命令)的話,所有FTP命令都要加上\r\n
ftpclient.sendServer("XMKD /test/bb\r\n"); //執(zhí)行服務(wù)器上的FTP命令
ftpclient.readServerResponse一定要在sendServer后調(diào)用
nameList("/test")獲取指目錄下的文件列表
XMKD建立目錄,當(dāng)目錄存在的情況下再次創(chuàng)建目錄時(shí)報(bào)錯(cuò)
XRMD刪除目錄
DELE刪除文件
*/
}
}
下面是FtpClient類的一些介紹:
sun.net.ftp.FtpClient.,該類庫主要提供了用于建立FTP連接的類。利用這些類的方法,編程人員可以遠(yuǎn)程登錄到FTP服務(wù)器,列舉該服務(wù)器上的目錄,設(shè)置傳輸協(xié)議,以及傳送文件。FtpClient類涵蓋了幾乎所有FTP的功能,F(xiàn)tpClient的實(shí)例變量保存了有關(guān)建立"代理"的各種信息。下面給出了這些實(shí)例變量:
public static boolean useFtpProxy
這個(gè)變量用于表明FTP傳輸過程中是否使用了一個(gè)代理,因此,它實(shí)際上是一個(gè)標(biāo)記,此標(biāo)記若為TRUE,表明使用了一個(gè)代理主機(jī)。
public static String ftpProxyHost
此變量只有在變量useFtpProxy為TRUE時(shí)才有效,用于保存代理主機(jī)名。
public static int ftpProxyPort
此變量只有在變量useFtpProxy為TRUE時(shí)才有效,用于保存代理主機(jī)的端口地址。
FtpClient有三種不同形式的構(gòu)造函數(shù),如下所示:
1、public FtpClient(String hostname,int port)
此構(gòu)造函數(shù)利用給出的主機(jī)名和端口號建立一條FTP連接。
2、public FtpClient(String hostname)
此構(gòu)造函數(shù)利用給出的主機(jī)名建立一條FTP連接,使用默認(rèn)端口號。
3、FtpClient()
此構(gòu)造函數(shù)將創(chuàng)建一FtpClient類,但不建立FTP連接。這時(shí),F(xiàn)TP連接可以用openServer方法建立。
一旦建立了類FtpClient,就可以用這個(gè)類的方法來打開與FTP服務(wù)器的連接。類ftpClient提供了如下兩個(gè)可用于打開與FTP服務(wù)器之間的連接的方法。
public void openServer(String hostname)
這個(gè)方法用于建立一條與指定主機(jī)上的FTP服務(wù)器的連接,使用默認(rèn)端口號。
public void openServer(String host,int port)
這個(gè)方法用于建立一條與指定主機(jī)、指定端口上的FTP服務(wù)器的連接。
打開連接之后,接下來的工作是注冊到FTP服務(wù)器。這時(shí)需要利用下面的方法。
public void login(String username,String password)
此方法利用參數(shù)username和password登錄到FTP服務(wù)器。使用過Intemet的用戶應(yīng)該知道,匿名FTP服務(wù)器的登錄用戶名為anonymous,密碼一般用自己的電子郵件地址。
下面是FtpClient類所提供的一些控制命令。
public void cd(String remoteDirectory):該命令用于把遠(yuǎn)程系統(tǒng)上的目錄切換到參數(shù)remoteDirectory所指定的目錄。
public void cdUp():該命令用于把遠(yuǎn)程系統(tǒng)上的目錄切換到上一級目錄。
public String pwd():該命令可顯示遠(yuǎn)程系統(tǒng)上的目錄狀態(tài)。
public void binary():該命令可把傳輸格式設(shè)置為二進(jìn)制格式。
public void ascii():該命令可把傳輸協(xié)議設(shè)置為ASCII碼格式。
public void rename(String string,String string1):該命令可對遠(yuǎn)程系統(tǒng)上的目錄或者文件進(jìn)行重命名操作。
除了上述方法外,類FtpClient還提供了可用于傳遞并檢索目錄清單和文件的若干方法。這些方法返回的是可供讀或?qū)懙妮斎搿⑤敵隽鳌O旅媸瞧渲幸恍┲饕姆椒ā?/p>
public TelnetInputStream list()
返回與遠(yuǎn)程機(jī)器上當(dāng)前目錄相對應(yīng)的輸入流。
public TelnetInputStream get(String filename)
獲取遠(yuǎn)程機(jī)器上的文件filename,借助TelnetInputStream把該文件傳送到本地。
public TelnetOutputStream put(String filename)
以寫方式打開一輸出流,通過這一輸出流把文件filename傳送到遠(yuǎn)程計(jì)算機(jī)
嚴(yán)重: Parse Error at line 2 column 14: Document is invalid: no grammar found.
org.xml.sax.SAXParseException: Document is invalid: no grammar found.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSA
ParseException(ErrorHandlerWrapper.java:236)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Er
orHandlerWrapper.java:172)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError
XMLErrorReporter.java:382)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError
XMLErrorReporter.java:316)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.sca
StartElement(XMLNSDocumentScannerImpl.java:177)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSC
ntentDispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:779)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerIm
l$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1794)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerIm
l.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(
ML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(
ML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser
java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(A
stractSAXParser.java:1242)
at org.apache.commons.digester.Digester.parse(Digester.java:1572)
at org.apache.myfaces.config.impl.digester.DigesterFacesConfigUnmarshal
erImpl.getFacesConfig(DigesterFacesConfigUnmarshallerImpl.java:183)
at org.apache.myfaces.config.FacesConfigurator.feedClassloaderConfigura
ions(FacesConfigurator.java:251)
at org.apache.myfaces.config.FacesConfigurator.configure(FacesConfigura
or.java:129)
at org.apache.myfaces.webapp.StartupServletContextListener.initFaces(St
rtupServletContextListener.java:69)
at org.apache.myfaces.webapp.StartupServletContextListener.contextIniti
lized(StartupServletContextListener.java:52)
at org.apache.catalina.core.StandardContext.listenerStart(StandardConte
t.java:3764)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:
216)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBas
.java:760)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:7
0)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:71
)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:49
)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.jav
:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecyc
eSupport.java:120)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:44
)
at org.apache.catalina.core.StandardService.start(StandardService.java:
48)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:70
)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
在DataBase Configuration Assisant安裝的時(shí)候,會報(bào)一個(gè)錯(cuò)誤,提示:
ORA-24324:未初始化服務(wù)句柄
ORA-24323:不允許此值
ORA-28547:連接服務(wù)器失敗,可能是Oracle Net管理錯(cuò)誤
這是因?yàn)椋糜蛴脩舻卿浿鳈C(jī)時(shí),Oracle會把主機(jī)在域當(dāng)中的名字當(dāng)作Host名。
解決辦法:
1.將sqlnet.ora文件中的
SQLNET_AUTHENTICATION_SERVICES= (NTS) 修改為 SQLNET_AUTHENTICATION_SERVICES= (NONE)
2.將listener.ora文件中LISTENER配置節(jié)中的主機(jī)名用IP地址代替
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
重新安裝即可