ftp กับ windows server 2008
ผมใช้ Windows server 2008 เป็น Web server และ ftp server
โดยใช้ Apache 2.2 เป็น Web service
ในโปรเจคที่ทำต้องมีการ ftp เพื่อ upload ไฟล์ขึ้นไปเก็บไว้ในโฟลเดอร์ภายในโปรเจคด้วย (รูป)
ปัญหาก็คือ เมื่อเอา script PHP ไปไว้บน Windows server 2008 แล้วทดสอบดูจะไม่เกิดผลใดๆเลย
การทดสอบอีกแบบนึงก็คือ ให้เครื่องผมเป็น ftp server และ script PHP อยู่ที่ Windows server 2008 (เหมือนเดิม) ก็ไม่ทำงานเช่นกัน ผมเลยคืดว่า น่าจะมีปัญหาที่ Apache ที่ทำงานบน Windows server 2008
ถ้าเอา script PHP ไว้ที่เครื่องผมเอง และ Windows server 2008 เป็น ftp server ก็สามารถใช้งาน script ได้ปกติ
ตอนแรกใช้ FTP7 คู่กับ IIS7 ของ Windows เองก็ติดปัญหาเดียวกัน และล่าสุดใช้ FileZilla Server แทน
โดยที่การตั้งค่าก็ทำได้โดยปกติ สามารถใช้ Command line ของ Windows เอง (ทั้งตัว server และ client) ftp ได้ปกติครับ
หรือใช้ Browser หรือใช้ Explorer ก็ทำงานได้อย่างถูกต้อง
ผมทำการ debug หลายๆแบบดู ได้ข้อสรุปว่าใน script PHP บันทัดที่ใช้ฟังก์ชั่น ftp_connect มันไม่ทำงานตั้งแต่บันทัดนี้ ยกตัวอย่างเช่น
$ftp_server = "xxx"; //<---- ชื่อ server
$conn_id = ftp_connect($ftp_server, 21, 10);
ค่า $conn_id เป็นค่าว่าง ในหน้าจอของ FileZilla Server ไม่มี log เกิดขึ้นเลย แต่ Set time out 10 นั่นก็ทำงานปกตินะครับ
จึงขอถามผู้ที่ทราบถึงข้อผิดพลาดครั้งนี้ของผม เพื่อแก้ไขให้มันทำงานได้ด้วยครับ Help me please!!!
ลองกำหนด Server เป็น ip
หรือ Port ถูกต้องหรือเปล่า
Firewall เปิดอยู่หรือเปล่า
Antivirus เปิดอยู่หรือเปล่า
ลองใช้ฟังก์ชั่น ftp_ssl_connect() แทน
ลองกำหนด
error_reporting(0);
ก่อนเรียกใช้งานฟังก์ชั่น ftp ดูเพื่อดูว่ามี error อะไรเกิดขึ้นบ้างขอบคุณมากครับ....
ข้อ 1-3 ทดสอบแล้วไม่พลาดแน่นอน
ข้อ 4 คิดว่าน่าจะไม่มีปัญหาครับ ผมไป allow service ที่เกี่ยวข้อง แล้วก็ทดสอบ ftp จากทุกเครื่องก็ทำงานได้ นอกจาก php ที่อยู่บน Host เองที่ไม่ทำงาน แต่ script PHP เดียวกันพออยู่บนเครื่องผมเองทำงานปกติ (เปลี่ยนชื่อ Host พอร์ต user pass แล้วก่อนทดสอบ)
ข้อ 5 Anti virus ก็ไม่มีปฏิกิริยานะครับ ที่ทำงานผมใช้ Anti virus แบบลิขสิทธิ์ถูกต้อง เป็นแบบ Server anti virus เพราะฉะนั้นถ้าโดนบล็อกน่าจะโดนหมด
พรุ่งนี้จะไปลอง ข้อ 6-7 ครับ อยากจะเห็น error massage มากเลย ไม่งั้นไปต่อลำบากจริงๆ ค้นใน google มีข้อมูลน้อยมาก ส่วนใหญ่จะเป็นการกล่าวถึงการตั้งค่า ftp ..... ไปเจอเรื่อง Firewall เลย Allow service ของ FileZilla Server ด้วย ตอนแรกผมเล็งไปในเรื่องของค่า config ของ Apache เองเลยที่ทำงานไม่ค่อยสมบูรณ์ใน Windows server 2008 (อันนี้เดา)
ผมใช้ Script ของ AjaxUpload จากเวปคุณ Goragod นี่แหละ ใช้ได้ดีเลยทีเดียว ขอบพระคุณมากครับ
เอ ไม่รู้อันไหนครับ ถ้าเป็น script Ajax อัปโหลด อันโบราณ ที่มีไฟล์ Browser ด้วย อันนั้นผมไม่แน่ใจนะครับ เนื่องจากผมเคยได้รับรายงานทำนองนี้มาครั้งนึงนานแล้วซึ่งผมไม่รู้ว่าคนที่นำไปใช้แก้ไขอย่างไร หรือว่าใช้ได้หรือเปล่า ลองค้นหาดูในบอร์ดนะครับ
เท่าที่ทดสอบบน Server ผมเองมันก็ปกติ (Linux บน Server จริงๆ และ Windows บน Server จำลอง) เลยจำไม่ได้ว่าแก้ไขอะไรไปยังไง
ผมใช้อันนี้นะ...
http://www.goragod.com/knowledge/2/AJAX Upload.html
คือผมเอามาประกอบกับหน้า Ajax ที่ผมเขียนอยู่เลยต้องเอาหน้า index ออกแล้วเรียกสคริปจากหน้าที่ผมทำเอง (มันโหลดมาด้วย Ajax) ก็ Work นะครับ ... เพียงแต่ยังไม่ทราบว่าเป็นเพราะอะไรเวลาเอาไปวางบนโฮสจริงมันไม่ทำงาน ก็เลยเขียนสคริปง่ายๆลองทดสอบการ ftp ดู ปรากฎว่ามันไม่ทำงานตั้งแต่ขั้นตอนการ connect แล้ว
คิดว่าสคริปน่าจะไม่มีปัญหานะครับ น่าจะเป็นที่ค่ารกำหนดในส่วนของ server มากกว่า เดี๋ยวถ้าได้ความอย่างไรแล้วจะเอามาโพสเพิ่มเติมครับ
สวัสดีครับ....
ขออภัยที่มารายงานผลช้าไปหน่อย หลังจากที่ทดลองทำไปหลายอย่าง จนกระทั่งนึกเอะใจ ด้วยความเลินเล่อของกระผมเอง ในไฟล์ host ผมตั้งค่ากลับไปกลับมาเพื่อทดลองบางอย่างมากไปหน่อย มันเลยขัดกับที่ผมกำหนดค่าชื่อโฮสที่ใช้ ftp
สรุปว่า ผมเรียกชื่อโฮสผิดนั่นเองมันเลยไม่ตอบสนองกับ Script PHP ตั้งแต่ขั้นตอนการติดต่อโฮสเลย ตอนนี้เลยกำหนดในไฟล์ host ดังนี้ครับ
127.0.0.1 localhost
127.0.0.1 xxxxx <----ชื่อโฮสครับ
ตอนนี้เลยใช้ได้ทั้ง IP และ ชื่อโฮส นอกนั้นทำงานได้ปกติครับ ผมเพิ่มในส่วนของการเปลี่ยนชื่อไฟล์ที่อัพโหลดขึ้นไปและแก้ไขเรื่องการแสดงผลนิดหน่อยครับ
ขอบพระคุณเป็นอย่างสูงสำหรับคำแนะนำทั้งหลาย
และที่น่าชื่นใจเป็นอย่างยิ่งก็คือ การให้ข้อมูล รวมถึงการ ทดลอง แก้ไข ปรับปรุง และการสรุปข้อมูล ครับ