พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
PHP development / ดูไพล์ให้หน่อยนะครับ
BosnoS
BosnoS
Mon 31 Jul 2006 18:32:58

ให้เช็คว่า Folder นั้นๆ มีหรือยัง ถ้ายังก็ให้สร้างแล้ว cmod เป็น 777 แล้ว copy ไพล์ภาพไปยังห้องนั้นๆ

$y =date("Y");
$m =date("m");
$d =date("d");
$dir_test ="../news/image_news/$y$m$d/";
if (!is_dir($dir_test)){
   mkdir($dir_test);

}else{
 echo "ÁÕ Folder ../news/image_news/$y$m$d ¹Ñé¹ÍÂÙèáÅéÇ";
}
chmod ($dir_test,0777);

$fileicon=$_FILES['fileicon'] ['tmp_name'];
$fileicon_name=$_FILES['fileicon'] ['name'];
$fileicon_size=$_FILES['fileicon'] ['size'];
$fileicon_type=$_FILES['fileicon'] ['type'];


if ($fileicon) {
 $array_last=explode (".",$fileicon_name);
 $c=count($array_last)-1;
 $lastname=strtolower($array_last[$c]);
 if ($lastname == "gif" or $lastname =="jpg" or $lastname =="jpeg") {
  if (move_uploaded_file ( $fileicon, $dir_test )){
   echo "complete";
   }
  echo " Upload ä¾ÅìàÃÕºÃéÍÂáÅéÇ<BR>";
  echo "<img src='../news/image_news/$y$m$d$/fileicon_name'><BR>";
  unlink ($fileicon);
 }else{
  echo " äÁèÊÒÁÒö Upload ä¾Åì ä´é";
 }
}else{
 echo " äÁèÊÒÁÒö Upload ä¾Åì ä´é";
}

--------------------------------------

มันเกิด Error

Warning: move_uploaded_file(../news/image_news/20060731/): failed to open stream: Is a directory in /home/virtual/site76/fst/var/www/html/mods/addrecord.php on line 70

Warning: move_uploaded_file(): Unable to move '/tmp/phpqFHGXD' to '../news/image_news/20060731/' in /home/virtual/site76/fst/var/www/html/mods/addrecord.php on line 70

รบกวนดูไพลฺให้หน่อยนะครับ

Administrator
Tue 1 Aug 2006 07:29:28
จาก error เหล่านี้อันแรกบอกว่าคุณกำลังพยายามย้าย ทั้ง directory ครับ
อันที่ 2 คุณพยายามย้ายไฟล์แต่ว่าคุณไม่ได้แจ้งชื่อไฟล์ปลายทางครับ
BosnoS
BosnoS
Tue 1 Aug 2006 19:38:23

Warning: copy(): SAFE MODE Restriction in effect. The script whose uid is 4516 is not allowed to access /home/virtual/site76/fst/var/www/html/news/image_news/06August01 owned by uid 48 in /home/virtual/site76/fst/var/www/html/mods/addrecord.php on line 66

Warning: copy(../news/image_news/06August01/auditoinlogo01.jpg): failed to open stream: No such file or directory in /home/virtual/site76/fst/var/www/html/mods/addrecord.php on line 66

ปัญหาข้างบนแก้ได้แล้วครับ ขอบคุณมากครับ แต่เจอปัญหาใหม่อีกแล้ว นั้นก็คือ สั่งให้ สร้าง Folder ขึ้นมาใหม่ แล้ว Chmod เป็น 777 หลังจากนั้นก็ copy ไพล์เข้าไป

ถ้าเป็นห้องที่สร้างผ่านทาง FTP ก็จะ copy ได้ไม่มีปัญหา แต่ถ้าเป็นห้องที่ สร้างผ่านคำสั่ง PHP จะเกิด Error แบบข้างบนนะครับ จนปัญญาจริงๆ ไม่รู้เกิดจากอะไร

Administrator
Tue 1 Aug 2006 19:53:56
ถ้าจำไม่ผิดใน SAFE_MODE จะไม่สามารถใช้งาน chmode ได้นะครับลองตรวจสอบ permission ครับว่าได้เป็น 777 หรือไม่ โดยถ้าไม่ได้เป็น 777 ให้ใช้ umask เข้าช่วยครับ เช่น

umask(0);
mkdir("dirname", 0777);

ใน php นั้น recommended ให้ใช้ move_uploaded_file() แทนครับ ซึ่งสามารถใช้ได้ทั้งบน SAFE_MODE และ NORMAL_MODE ครับ
BosnoS
BosnoS
Tue 1 Aug 2006 21:12:29

Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 4516 is not allowed to access /home/virtual/site76/fst/var/www/html/news/image_news/06August01 owned by uid 48 in /home/virtual/site76/fst/var/www/html/mods/addrecord.php on line 92

แก้เป็น คำสั่ง move_uploaded_file():  แล้ว

พอ php สร้างห้องเสร็จ ก็ไปเช็คแล้วว่า เป็น Chmod 777 ได้

แต่คำสั่ง move_uploaded_file():  ก็ยัง Error

เรื่องสร้างห้อง และ Chmod เป็น 777 อันนี้ผ่านแล้ว มีปัญหาก็คือ คำสั่ง move_upload_file(); มีปัญหา

** ถ้าห้องสร้างเองผ่าน FTP คำสั่ง move_upload_file(); ผ่านไม่มีปัญหา

** ถ้าสร้างผ่าน PHP คำสั่ง move_upload_file(); จะเจอ Error ทันที

Administrator
Tue 1 Aug 2006 22:30:32
เข้าใจว่า SELinux เปิดอยู่ทำให้ไม่สามารถใช้งานได้ครับ มีทางแก้คือใช้ ftp function แทนครับ อ่านการใช้งานได้ที่ http://www.php.net/manual/en/ref.ftp.php
BosnoS
BosnoS
Tue 1 Aug 2006 23:51:44

-ขอบคุณครับ ว่าแต่ไม่ค่อยรู้เรื่องอะครับ มีคู่มือภาษาไทยไหมครับ ^^ (ศึกษา PHP มา 3 สัปดาเอง ยัง งง อยู่เลย)

BosnoS
BosnoS
Wed 2 Aug 2006 00:16:15

$y =date("Y");
$m =date("m");
$d =date("d");
$ftp_user_name = "???";
$ftp_user_pass = "???";
$ftp_server = "???";
$dir_test ="../news/image_news/$y$m$d";

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// try to create the directory $dir
if (ftp_mkdir($conn_id, $dir_test)) {
 echo "successfully created $dir_test\n";
} else {
 echo "There was a problem while creating $dir\n";
}

// close the connection
ftp_close($conn_id);
?>

ใส่ตามตัวอย่างเลย เช็ค$login_result แล้วก็เป็นจริง แสดงว่าติดต่อข้อมูลได้ แต่เจอ Error

Warning: ftp_mkdir(): ../news/image_news/20060802: No such file or directory in /home/virtual/site76/fst/var/www/html/mods/mkdirftp.php on line 20
There was a problem while creating

น่าจะไม่ใช่ Error ที่ยาก แต่ไม่เข้าใจ ดูให้หน่อยนะครับ

Administrator
Wed 2 Aug 2006 00:44:53
ลองทำการ ftp_pwd() ดูครับว่า path ปัจจุบันเป็นตำแหน่งใดครับ ตาม error ด้านบนนั้นคือ path ที่ต้องการสร้างนั้นไม่มีอยู่จริงครับ

เคยเห็นมีคนเอามาแปลขายนะครับ แต่จำไม่ได้ว่าชื่อหนังสือว่าอะไรครับ
BosnoS
BosnoS
Wed 2 Aug 2006 18:28:24

ลองใช้ ftp_pwd()  แล้ว ผลก็คือ

/home/admin นะ แต่ไม่รู้มันเป็นส่วนไหน

แล้วก็ลองใช้คำสั่ง ftp_chdir($conn_id,"..");

มันก็จะเหลิอ /home เฉยๆ

ผมต้องการให้มัน ไปสร้างใน /var/www/html/news/image_news/ นะครับ ไม่รู้ว่าจะต้องพิมพ์ยังไง

ถ้ารู้ว่า /home คือ ส่วนไหน ก้น่าจะไปต่อได้ รบกวนหน่อยนะครับ

Administrator
Wed 2 Aug 2006 18:47:08
ถ้าอย่างนั้นคุณก็สามารถใช้ ftp_chdir($conn_id, "/var/www/html/news/image_news") ได้เลยครับเป็นการอ้างแบบ absolute ครับ
BosnoS
BosnoS
Wed 2 Aug 2006 20:15:12

ผมใช้คำสั่ง ftp_chmod ไม่ได้อ่ะครับ ปกติเวลาเขียน php บน Dream ถ้าเป็นคำสั่ง php ต้องขึ้นตัวสีฟ้า แต่ คำสั่ง ftp_chmod มันเป็นสีดำ เหมือนกับไม่รู้จักคำสั่งนี้เลย งง จัง

สรุปตอนนี้ ยังไงก็ยังทำไม่ได้เริ่มท้อแระ กะว่า จะไปทำตัวอื่นก่อนดีกว่า ติดมานานมากแล้ว

^^

Administrator
Wed 2 Aug 2006 20:59:35
ftp_chmod() จะมีใช้งานใน PHP5 ครับซึ่ง DW จะมี list ของ PHP4 เท่านั้นครับ ซึ่งคุณสามารถใช้คำสั่ง ftp_site() เพื่อส่งคำสี่งไปยัง ftp ได้ตามต้องการครับ

ftp_site
($conn, 'CHMOD 0600 /home/user/privatefile');
BosnoS
BosnoS
Wed 2 Aug 2006 21:36:11

$y =date("Y");
$m =date("m");
$d =date("d");

ftp_site($conn_id, 'CHMOD 0777 /var/www/html/news/image_news/$y$m$d/');

เจอ Error Warning: ftp_site(): /var/www/html/news/image_news/$y$m$d/: No such file or directory in /home/virtual/site76/fst/var/www/html/mods/mkdirftp.php on line 25

คือ ทำไม มันมองไม่เห็นตัวแปลอ่ะครับ ลองเปลี่ยน $y$m$d เป็น 20060802 มันก็ chmod ได้ตามปกติ ลองมั่วๆ ใส่

ftp_site($conn_id, 'CHMOD 0777 "/var/www/html/news/image_news/$y$m$d/"');

ก็เจอ Error แบบเดิมเลย

ต้องแก้ยังไงหรอครับ มันถึงจะเห็นค่า $y$m$d เป็นตัวแปร

BosnoS
BosnoS
Wed 2 Aug 2006 21:55:44

ftp_site($conn_id, "CHMOD 0777 /var/www/html/news/image_news/$y$m$d");  ลองเปลี่ยนมาเป็นแบบนี้ สรุปว่ามัน ผ่านแล้ว ทั้งสร้างห้องเอง Chmod เป็น 777 และ copy ลงไป

ขอบคุณมากๆ เลยครับ

แต่....................

ปัญหาที่ไม่เคยเกิดก็ดันมาเกินขึ้นอีก นั้นก็คือ

Warning: unlink(): SAFE MODE Restriction in effect. The script whose uid is 4516 is not allowed to access /tmp owned by uid 0 in /home/virtual/site76/fst/var/www/html/mods/addrecord.php on line 126

คำสั่งนี้ไม่เคยไปยุ่งกับมันตั้งแต่มันผ่าน แต่อยู่ๆ ก็มี error เฉยเลย รบกวนดูให้หน่อยนะครับ

Administrator
Wed 2 Aug 2006 23:55:00
คุณต้องการ DELETE ไฟล์ที่อยู่ใน /tmp ซึ่งปกติแล้วจะไม่สามารถทำได้อยู่แล้วครับ ไม่ทราบว่าต้องการลบไฟล์นั้นๆเพื่อใช้ในส่วนใดหรือครับ ถ้าสำหรับการ upload ลองใช้ move_uploaded_file() ดูครับ
BosnoS
BosnoS
Thu 3 Aug 2006 00:28:38

อ่า จริงๆแล้วคำสั่ง ผมก็เอาพวก Code ต่างๆ มาจากหนังสือนะครับ แล้วในนั้นเขาก็มีคำสั่ง unink ด้วย ซึ่งพอไปหาหนังสืออ่านก็พอรู้ว่า เป็นคำสั่งลบไพล์ต้นฉบับ ซึ่ง อันนี้ผมก็ไม่รู้ว่า มันจำเป็นหรือเปล่า เพียงแต่เขาให้มา แล้วมัน Error เลยมาถามดูครับ แต่ถ้าคุณบอกแบบนี้ ก็แสดงว่า ไม่จำเป็นต้องลบก็ได้ งั้นไม่เป็นไรครับ ^^ เด๊ยวไปเอาคำสั่ง unlink ออก ^^ ตอนนี้กับ Happy เลย ท่านช่วยจน ตอนนี้ปัญหาทั้งหมด เคลียร์หมดแล้วครับ ทำผ่านหมดแล้ว ขอบคุณมากๆ ครับ

BosnoS

Administrator
Thu 3 Aug 2006 03:56:25
ด้วยความยินดีครับ
jod
jod
Wed 11 Jun 2008 20:55:43

Warning: move_uploaded_file(./image/rmphoto/pic (38).jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in D:\Project\Website\AHTASIA.CO.TH\PHP\rmupload.php on line 55

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\WINDOWS\Temp\phpA1.tmp' to './image/rmphoto/pic (38).jpg' in D:\Project\Website\AHTASIA.CO.TH\PHP\rmupload.php on line 55

รอบกวนช่วยดูให้หน่อยครับ ใน ./ มี folder พร้อมทั้งเปิด permission เรียบร้อยแล้วครับ  พอถึง move แล้วมันไม่ไปครับ

webmaster
webmaster
Wed 11 Jun 2008 22:03:36
น่าจะไม่มี permission ในการ write ครับ
jod
jod
Thu 12 Jun 2008 08:50:36

เป็น permission ในระดับไหนครับ เพราะว่าผมเปิดเป็น full permission เฉพาะ folder ที่ต้องการ move files เข้าไปเท่านั้นครับ ไม่แน่ใจว่าใน temp ต้องเปิดด้วยหรือเปล่าครับ

jod
jod
Thu 12 Jun 2008 09:03:29
ขอคำชี้แนะด้วยนะครับ
webmaster
webmaster
Thu 12 Jun 2008 23:58:22
ถ้าเป็น sub directory ลองเปิด permission ที่ parent directory ด้วยครับ
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login