ขอความช่วยเหลือ ด้วยครับ php ไม่สามารถส่งไฟล์ขึ้นเว็บได้ แต่รันในเครื่องได้ปกติ

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderators: mindphp, ผู้ดูแลกระดาน

apexthai

ขอความช่วยเหลือ ด้วยครับ php ไม่สามารถส่งไฟล์ขึ้นเว็บได้ แต่รันในเครื่องได้ปกติ

Post by apexthai » 13/02/2010 5:28 pm

สวัสดีครับผมได้เขียน PHP และ Mysql ในเครื่องของตัวเอง
มันสามารถ เพิ่ม ลบ เปลี่ยนรูปได้ ไม่มีปัญหาใดๆ

แต่พอนำไปใส่ในโฮสกลับไม่สามารถอัพเดทรูปได้เลยครับ
ปัญหาแรกที่เจอคือทางโฮสไม่เปิดให้ใช้งานฟังก์ชั่น post Get
จึงต้องแก้โคสโดยทางฝ่ายเทคนิคเสนอให้ใช้
extract($_POST)
extract($_GET)
extract($_REQUEST)
ในการรับส่งค่าแทนเนื่องจากระบบความปลอดภัย(ปัญหานี้ผมได้ทำตาม และสามารถแก้ไขได้แล้วครับ)

ปัญหาต่อมาคือไม่สามารถอับเดทไฟล์ขึ้นเว็บได้โดยมีลักษณะการทำงานดังนี้
1.พิมพ์ตัวอักษร และ เลือกไฟล์ที่จะทำการอัพเดท
2.กดส่งค่า
3.มี warning ขึ้นมาดังนี้ครับ
Warning: mkdir() [function.mkdir]: Permission denied in D:\\inetpub\\vhosts\\thailw.com\\httpdocs\\admin\\edit_pic.php on line 34
Warning: copy(a1.jpg) [function.copy]: failed to open stream: No such file or directory in D:\\inetpub\\vhosts\\thailw.com\\httpdocs\\admin\\edit_pic.php on line 35

4.เมื่อทำการเช็คในdata base แล้วพบว่าค่าต่างๆมาครบครับ ทั้ง text และ วันเวลา แต่เมื่อไปดูในโฟเดอร์กลับไม่มีไฟล์ที่อับเดทเข้าไปครับ

รบกวนผู้รู้ช่วยแนะนำการแก้ปัญหาด้วยครับ

Code: Select all

<?
include('configadmin.php\');
?>
 <?php 
$path="bg"; // bg เป็นชื่อของโฟเดอร์ที่ผมได้สร้างเอาไว้ซึ่งอยู่ในที่เดียวกับโคสไฟล์นี้ครับ edit_pic.php
 ///////////////////////////////////////////////////////////////////////////////////
if(isset($HTTP_POST_VARS[\'Submit\'])=="ตกลง")
{
 $headline = eregi_replace(chr(13)," <br> ", $headline );
 $headline = eregi_replace("(^|[>[:space:]\\n])([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])([<[:space:]\\n]|$)","<a href="\\\\2://\\\\3\\\\4\\" target="_blank">\\\\2://\\\\3\\\\4</a>", $headline );
 $headline = eregi_replace("([[:alnum:]]+)@([^[:space:]]*)([[:alnum:]])([<[:space:]\\n]|$)","<a href=mailto:\\\\1@\\\\2\\\\3\\>\\\\1@\\\\2\\\\3</a>", $headline );
///////////////////////////////////////////////////////////////////////////////////////////////////ไฟล์แรก
 $TempName = $HTTP_POST_FILES[\'file\'][\'tmp_name\'];
   $Name=$HTTP_POST_FILES[\'file\'][\'name\'];
   $Type = $HTTP_POST_FILES[\'file\'][\'type\'];
 //ตรวจสอบชนิดรูป   
 $pic_type=split("/",$Type);
 if ((($pic_type[1]=="png")||($pic_type[1]=="1231")))
 {
 msg(" ใส่ชนิด file ไม่ถูกต้อง");
 }
 if(@opendir("$path"))
 {
 copy($HTTP_POST_FILES[\'file\'][\'tmp_name\'],"$path/".$Name);
 }
 else
 {
 mkdir("$path");
 copy($HTTP_POST_FILES[\'file\'][\'tmp_name\'],"$path/".$Name);
 }
 if($headline=="intro"){
 $note="หน้าก่อนเข้าเว็บไซต์";
 }elseif($headline=="home"){
 $note="แนะนำหน่วยงานเจ้าของเว็บไซต์";
 }else{
 $note="หน้าถามตอบ";
 }
 /////////////////////////////////////////////////////////////////////////////////
 if($file==""){
  $updateSQL = "UPDATE picture  SET  headline=\'$headline\',note=\'$note\',modified=NOW() WHERE news_ID=\'$news_ID\'";
  
   }elseif($file!=""){
  if($Name!=$picture){
//////////////////////////////////////
mysql_connect($host,$user,$passwd);
$path="bg";
 $sql = "SELECT * FROM picture WHERE news_ID=\'$news_ID\'";
 $result= mysql_query($sql);
 
 $num_rows = mysql_num_rows($result);
 if ($num_rows >=1) {
 $fetcharr = mysql_fetch_array($result);
 $picture= $fetcharr[\'picture\'];
 
 if($picture==""){  }else{
    $file_com = "$path/$picture";  #ไฟล์รูป
   if (file_exists("$file_com")) { unlink("$file_com"); } else {  };  #ทำการลบรูปออกไป
   }
 } else {
 echo "ไม่พบข้อมูล <br>";
 die;
 }
}
////////////////////////////////////////////////////////////////////////////
 $updateSQL = "UPDATE picture  SET headline=\'$headline\',note=\'$note\',picture=\'$Name\',modified=NOW() WHERE news_ID=\'$news_ID\'";
 /////////////////////////////////////////////////////////////////////////
 }else{
 $updateSQL ="UPDATE picture  SET headline=\'$headline\',note=\'$note\',modified=NOW() WHERE news_ID=\'$news_ID\'";
 }
 $Result = mysql_query($updateSQL, $connrenew) or die(mysql_error());
  if($Result!=0)
  {
 if($status == 1){
 echo "<meta http-equiv=\'refresh\' content=\'0;URL=pic_list.php\'>";
 }else{
 echo "<meta http-equiv=\'refresh\' content=\'0;URL=pic_list.php\'>";
  }
}
}
?>

bm8408
PHP Full Member
PHP Full Member
Posts: 48
Joined: 28/01/2010 10:03 pm

Re: ขอความช่วยเหลือ ด้วยครับ php ไม่สามารถส่งไฟล์ขึ้นเว็บได้ แต่รันในเครื่องได้ปกติ

Post by bm8408 » 13/02/2010 5:46 pm

apexthai wrote:สวัสดีครับผมได้เขียน PHP และ Mysql ในเครื่องของตัวเอง
มันสามารถ เพิ่ม ลบ เปลี่ยนรูปได้ ไม่มีปัญหาใดๆ

แต่พอนำไปใส่ในโฮสกลับไม่สามารถอัพเดทรูปได้เลยครับ
ปัญหาแรกที่เจอคือทางโฮสไม่เปิดให้ใช้งานฟังก์ชั่น post Get
จึงต้องแก้โคสโดยทางฝ่ายเทคนิคเสนอให้ใช้
extract($_POST)
extract($_GET)
extract($_REQUEST)
ในการรับส่งค่าแทนเนื่องจากระบบความปลอดภัย(ปัญหานี้ผมได้ทำตาม และสามารถแก้ไขได้แล้วครับ)

ปัญหาต่อมาคือไม่สามารถอับเดทไฟล์ขึ้นเว็บได้โดยมีลักษณะการทำงานดังนี้
1.พิมพ์ตัวอักษร และ เลือกไฟล์ที่จะทำการอัพเดท
2.กดส่งค่า
3.มี warning ขึ้นมาดังนี้ครับ
Warning: mkdir() [function.mkdir]: Permission denied in D:\\inetpub\\vhosts\\thailw.com\\httpdocs\\admin\\edit_pic.php on line 34
Warning: copy(a1.jpg) [function.copy]: failed to open stream: No such file or directory in D:\\inetpub\\vhosts\\thailw.com\\httpdocs\\admin\\edit_pic.php on line 35

4.เมื่อทำการเช็คในdata base แล้วพบว่าค่าต่างๆมาครบครับ ทั้ง text และ วันเวลา แต่เมื่อไปดูในโฟเดอร์กลับไม่มีไฟล์ที่อับเดทเข้าไปครับ

รบกวนผู้รู้ช่วยแนะนำการแก้ปัญหาด้วยครับ
<?
include(\'configadmin.php\');
?>
<?php
$path="bg"; // bg เป็นชื่อของโฟเดอร์ที่ผมได้สร้างเอาไว้ซึ่งอยู่ในที่เดียวกับโคสไฟล์นี้ครับ edit_pic.php
///////////////////////////////////////////////////////////////////////////////////
if(isset($HTTP_POST_VARS[\'Submit\'])=="ตกลง")
{
$headline = eregi_replace(chr(13)," <br> ", $headline );
$headline = eregi_replace("(^|[>[:space:]\\n])([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])([<[:space:]\\n]|$)","<a href="\\\\2://\\\\3\\\\4\\" target="_blank">\\\\2://\\\\3\\\\4</a>", $headline );
$headline = eregi_replace("([[:alnum:]]+)@([^[:space:]]*)([[:alnum:]])([<[:space:]\\n]|$)","<a href=mailto:\\\\1@\\\\2\\\\3\\>\\\\1@\\\\2\\\\3</a>", $headline );
///////////////////////////////////////////////////////////////////////////////////////////////////ไฟล์แรก
$TempName = $HTTP_POST_FILES[\'file\'][\'tmp_name\'];
$Name=$HTTP_POST_FILES[\'file\'][\'name\'];
$Type = $HTTP_POST_FILES[\'file\'][\'type\'];
//ตรวจสอบชนิดรูป
$pic_type=split("/",$Type);
if ((($pic_type[1]=="png")||($pic_type[1]=="1231")))
{
msg(" ใส่ชนิด file ไม่ถูกต้อง");
}
if(@opendir("$path"))
{
copy($HTTP_POST_FILES[\'file\'][\'tmp_name\'],"$path/".$Name);
}
else
{
mkdir("$path");
copy($HTTP_POST_FILES[\'file\'][\'tmp_name\'],"$path/".$Name);
}
if($headline=="intro"){
$note="หน้าก่อนเข้าเว็บไซต์";
}elseif($headline=="home"){
$note="แนะนำหน่วยงานเจ้าของเว็บไซต์";
}else{
$note="หน้าถามตอบ";
}
/////////////////////////////////////////////////////////////////////////////////
if($file==""){
$updateSQL = "UPDATE picture SET headline=\'$headline\',note=\'$note\',modified=NOW() WHERE news_ID=\'$news_ID\'";

}elseif($file!=""){
if($Name!=$picture){
//////////////////////////////////////
mysql_connect($host,$user,$passwd);
$path="bg";
$sql = "SELECT * FROM picture WHERE news_ID=\'$news_ID\'";
$result= mysql_query($sql);

$num_rows = mysql_num_rows($result);
if ($num_rows >=1) {
$fetcharr = mysql_fetch_array($result);
$picture= $fetcharr[\'picture\'];

if($picture==""){ }else{
$file_com = "$path/$picture"; #ไฟล์รูป
if (file_exists("$file_com")) { unlink("$file_com"); } else { }; #ทำการลบรูปออกไป
}
} else {
echo "ไม่พบข้อมูล <br>";
die;
}
}
////////////////////////////////////////////////////////////////////////////
$updateSQL = "UPDATE picture SET headline=\'$headline\',note=\'$note\',picture=\'$Name\',modified=NOW() WHERE news_ID=\'$news_ID\'";
/////////////////////////////////////////////////////////////////////////
}else{
$updateSQL ="UPDATE picture SET headline=\'$headline\',note=\'$note\',modified=NOW() WHERE news_ID=\'$news_ID\'";
}
$Result = mysql_query($updateSQL, $connrenew) or die(mysql_error());
if($Result!=0)
{
if($status == 1){
echo "<meta http-equiv=\'refresh\' content=\'0;URL=pic_list.php\'>";
}else{
echo "<meta http-equiv=\'refresh\' content=\'0;URL=pic_list.php\'>";
}
}
}
?>

ลอง CHMOD เป็น 777 ดูครับ folder ที่เก็บรูปอ่ะ ครับ
โฮสติ้ง300/ปี โดเมนเนม249/ปี บริการวิทยุออนไลน์,รับทำเว็บไซต์,ดูแลเว็บไซต์ หน่วยงานราชการ
http://www.hosting-th.net

4404

Re: ขอความช่วยเหลือ ด้วยครับ php ไม่สามารถส่งไฟล์ขึ้นเว็บได้ แต่รันในเครื่องได้ปกติ

Post by 4404 » 13/02/2010 9:26 pm

ขอบคุณครับตอนนี้แก้ปัญหาได้แล้วครับ
เนื่องจากโฮสไม่ได้เปิดสิทธิให้ครับ แต่เจ้าหน้าที่ยังยืนยันว่าเปิดให้ผมแล้ว
และยังบอกว่าโค๊สของผมเขียนมาผิด ให้กลับไปแก้ไขที่โค๊สนะครับ

ขอบคุณสำหรับทุกคำตอบครับ ขอให้เคสผมเป้นตัวอย่างสำหรับผู้พัฒนาเว็บนะครับว่าโฮส
ที่มีพนักงานตอบชุ่ยๆ มั่วๆก็มีนะครับ

bm8408
PHP Full Member
PHP Full Member
Posts: 48
Joined: 28/01/2010 10:03 pm

Re: ขอความช่วยเหลือ ด้วยครับ php ไม่สามารถส่งไฟล์ขึ้นเว็บได้ แต่รันในเครื่องได้ปกติ

Post by bm8408 » 13/02/2010 11:04 pm

บุคคลทั่วไป wrote:ขอบคุณครับตอนนี้แก้ปัญหาได้แล้วครับ
เนื่องจากโฮสไม่ได้เปิดสิทธิให้ครับ แต่เจ้าหน้าที่ยังยืนยันว่าเปิดให้ผมแล้ว
และยังบอกว่าโค๊สของผมเขียนมาผิด ให้กลับไปแก้ไขที่โค๊สนะครับ

ขอบคุณสำหรับทุกคำตอบครับ ขอให้เคสผมเป้นตัวอย่างสำหรับผู้พัฒนาเว็บนะครับว่าโฮส
ที่มีพนักงานตอบชุ่ยๆ มั่วๆก็มีนะครับ

คุณเขียนไม่ผิดหลอก ครับ โฮสเค้าไม่ support มากกว่า founctin บางตัวเค้าไม่ได้เปิด เลยไม่สามารถใช้งานได้ครับ

:mrgreen:
โฮสติ้ง300/ปี โดเมนเนม249/ปี บริการวิทยุออนไลน์,รับทำเว็บไซต์,ดูแลเว็บไซต์ หน่วยงานราชการ
http://www.hosting-th.net

mlaveo
PHP Jr. Member
PHP Jr. Member
Posts: 11
Joined: 05/02/2010 12:54 pm

Re: ขอความช่วยเหลือ ด้วยครับ php ไม่สามารถส่งไฟล์ขึ้นเว็บได้ แต่รันในเครื่องได้ปกติ

Post by mlaveo » 15/02/2010 4:12 pm

ในกรณีที่เขียน code ในเครื่องเราผ่านแล้ว upload ขึ้น host แล้ว ไม่ ผ่าน ส่วน ใหญ่เกิดจาก
1 connection ที่ใช้ติดต่อฐานข้อมูลไม่ตรงกัน
2 version ของ php or database หรืออื่น ๆ ไม่ ตรงกัน(ส่วนน้อย)
3 สิทธิการใช้งาน folder ครับ
4 ชื่อตาราง ทั้งสองฝั่งไม่ตรงกัน
5 upload ไปลงผิดที่ครับ

อันนี้ปัญหาเบื้องต้นครับ ถ้าเจอปัญหาลักษณะนี้อีก ก้อลอง ไล่เช็ค ดูครับ
ใช้ internet ให้เป็นและคุ้มค่าเพิ่มรายได้ให้กับคุณ 3,000 บาท/เดือน-www.richinayear.ws-ทราบแล้วบอกต่อ

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “Programming - PHP”

Who is online

Users browsing this forum: Bing [Bot], Google [Bot] and 8 guests