[1] ตัวแปรที่ได้รับ โพสต์ และเซสชันไม่สามารถถ่ายโอนระหว่างเพจได้ ในเวอร์ชัน PHP ล่าสุด ตัวแปรโกลบอลอัตโนมัติจะถูกปิด ดังนั้นหากต้องการรับตัวแปรที่ส่งจากเพจที่แล้ว ให้ใช้ $_GET['foo'], $ _POST ['foo'],$_SESSION['foo'] เพื่อรับ แน่นอน คุณยังสามารถแก้ไขตัวแปรโกลบอลอัตโนมัติให้เป็นเปิดได้ (php.ini ถูกเปลี่ยนเป็น register_globals = On) เมื่อพิจารณาถึงความเข้ากันได้ จะเป็นการดีกว่าถ้าคุณบังคับตัวเองให้คุ้นเคยกับวิธีการเขียนแบบใหม่
[2] การใช้วิธี get เพื่อส่งพารามิเตอร์ภาษาจีนไปยัง apache2 ภายใต้ Win32 จะทำให้เกิดข้อผิดพลาด:
test.php?a=Hello&b=Hello
การส่งผ่านพารามิเตอร์จะทำให้เกิดข้อผิดพลาดภายใน วิธีแก้ไข: "test.php?a=".urlencode ( สวัสดี).."&b=".urlencode(Hello)
.............
[3] เซสชันภายใต้ win32 ทำงานไม่ถูกต้อง
php.ini default session.save_path = /
tmp เห็นได้ชัดว่ามัน เป็นการกำหนดค่าภายใต้ Linux PHP ภายใต้ win32 ไม่สามารถอ่านและเขียนไฟล์เซสชันได้ทำให้เซสชันใช้งานไม่ได้เพียงเปลี่ยนเป็นเส้นทางที่แน่นอน ตัวอย่างเช่น session.save_path = c:windows emp
[4] แสดงข้อความแสดงข้อผิดพลาด
เมื่อ php.ini เมื่อ display_errors = On และ error_reporting = E_ALL ข้อผิดพลาดและข้อความแจ้งทั้งหมดจะปรากฏขึ้น วิธีที่ดีที่สุดคือเปิดใช้งานในระหว่างการดีบักเพื่อแก้ไขข้อผิดพลาด หากคุณใช้วิธีการเขียน PHP ก่อนหน้านี้ ข้อความแสดงข้อผิดพลาดส่วนใหญ่จะเกี่ยวกับไม่ได้กำหนดไว้ ตัวแปร จะมีการแจ้งเมื่อมีการเรียกตัวแปรก่อนที่จะกำหนดค่า วิธีแก้ไขคือการตรวจจับหรือป้องกันตัวแปร
ตัวอย่างเช่น หากต้องการแสดง $foo คุณสามารถ if(isset($foo)) echo $foo หรือ echo @$foo
[5] mail() ไม่สามารถส่งอีเมลภายใต้ Win32 ได้
Sendmail ที่กำหนดค่าภายใต้ Linux สามารถส่งได้ แต่คุณต้องโทร
smtp ภายใต้ win32 เซิร์ฟเวอร์ใช้ในการส่งอีเมล
แก้ไข SMTP ของ php.ini = ip //ip เป็นเซิร์ฟเวอร์ smtp ที่ไม่มีฟังก์ชันการตรวจสอบ (หายากทางออนไลน์)
เพื่อส่งโดยตรงไปยังเซิร์ฟเวอร์อีเมลของอีกฝ่ายแทนการส่งต่อเซิร์ฟเวอร์
[6] หากไม่ได้ตั้งรหัสผ่านสำหรับการติดตั้งครั้งแรกของ MySQL คุณควรใช้อัปเดต mysql.user ตั้งรหัสผ่าน = "รหัสผ่านของคุณ" โดยที่ user = "root" เพื่อเปลี่ยนรหัสผ่าน
[7]
ข้อผิดพลาดที่ส่งส่วนหัวแล้วมักจะเกิดขึ้น เมื่อคุณใช้ HEADER อาจมีสาเหตุหลายประการ: 1. คุณ PRING หรือ ECHO ก่อนที่จะใช้ HEADER 2. มีบรรทัดว่างอยู่ด้านหน้าไฟล์ปัจจุบันของคุณ 3. คุณอาจรวมไฟล์แล้วและมีบรรทัดว่างที่ส่วนท้าย ของไฟล์ ไม่เช่นนั้นข้อผิดพลาดนี้จะเกิดขึ้นในเอาต์พุต -
【8】หลังจากเปลี่ยน php.ini และไม่มีการเปลี่ยนแปลง
ให้รีสตาร์ทเว็บเซิร์ฟเวอร์ เช่น IIS, Apache ฯลฯ จากนั้นการตั้งค่าล่าสุดจะถูกนำไปใช้
[9] PHP ได้รับการติดตั้งในปี 2003 (ฉันต้องการขอคำแนะนำจากผู้เชี่ยวชาญเกี่ยวกับวิธีการติดตั้ง ISAPI)
ดูเหมือนว่า
php4isapi.dll ของ PHP4 จะขัดแย้งกับรุ่น 2003 สามารถติดตั้งได้ในโหมด CGI เท่านั้น
ขั้นแรกให้ดาวน์โหลดโปรแกรมการติดตั้งภายใต้ www.php.net I สิ่งที่ติดตั้งไว้คือ: php-4.2.3-installer.exe คุณยังสามารถค้นหาเวอร์ชันล่าสุดได้อีกด้วย 4.2.3-installer.exe หลังการติดตั้ง ให้ไปที่เว็บไซต์เริ่มต้น -> การกำหนดค่าแอปพลิเคชัน
ขั้นตอนที่ 2: คลิกส่วนขยายบริการเว็บ -> ส่วนขยายบริการเว็บใหม่
ขั้นตอนที่ 3: ส่วนขยาย -> php จากนั้นเพิ่ม
ขั้นตอนที่ 4: ค้นหาเส้นทางไปยัง php.exe และเพิ่มเข้าไป
ขั้นตอนที่ห้า: ยืนยัน เท่านี้ก็เรียบร้อย!
ขั้นตอนที่ 6: เลือกส่วนขยายบริการ PHP แล้วคลิกอนุญาต
【10】บางครั้งคำสั่ง sql ไม่ทำงานและการทำงานของฐานข้อมูลล้มเหลว วิธีที่ง่ายที่สุดในการแก้ไขคือการสะท้อนประโยค sql และดูว่าสามารถรับค่าของตัวแปรได้หรือไม่
[11]ไม่มีความแตกต่างกันมากนักระหว่าง
include และ need
หากไม่มีไฟล์ที่จะรวมอยู่ ให้ include แจ้งเตือน จากนั้นดำเนินการคำสั่งต่อไปนี้ แจ้งข้อผิดพลาดร้ายแรง และออกจากการทดสอบของฉัน ภายใต้แพลตฟอร์ม win32 คำสั่งเหล่านี้จะถูกรวมไว้ก่อนแล้วจึงดำเนินการ ดังนั้นจึงเป็นการดีที่สุดที่จะไม่รวมหรือต้องการคำสั่งในไฟล์ที่รวมไว้ ซึ่งจะทำให้เกิดความสับสนในไดเรกทอรี บางทีสถานการณ์อาจแตกต่างออกไปภายใต้ *nux ฉันยังไม่ได้ทดสอบ
หากคุณไม่ต้องการรวมไฟล์หลายครั้ง คุณสามารถใช้ include_once หรือ need_once## เพื่ออ่านและเขียนข้อมูลเอกสาร
ฟังก์ชั่น r($file_name) {
$filenum=@fopen($file_name,"r ");
@ฝูง($ไฟล์,LOCK_SH);
$file_data=@fread($filenum,ขนาดไฟล์($file_name ));
@fclose($ไฟล์);
ส่งคืน $file_data;
-
ฟังก์ชั่น w($file_name,$data,$method="w"){
$filenum=@fopen($file_name,$method );
ฝูง($filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
fclose($ไฟล์);
ส่งคืน $file_data;
}
[12] ความแตกต่างระหว่าง isset() และ Empty()
คือทั้งสองถูกใช้เพื่อทดสอบตัวแปร แต่ isset() ทดสอบว่าตัวแปรได้รับการกำหนดค่าหรือไม่ ในขณะที่ Empty() ทดสอบว่าตัวแปรที่ได้รับการกำหนดให้ ค่าว่างเปล่า
หากมีการอ้างอิงตัวแปรใน PHP โดยไม่ได้รับการกำหนดค่า จะได้รับอนุญาต แต่จะมีการแจ้งเตือนหากตัวแปรถูกกำหนดให้เป็นค่าว่าง $foo="" หรือ $foo=0 หรือ $foo=false, จากนั้นให้ค่าว่าง($ foo) คืนค่าจริง, isset($foo) คืนค่าจริงด้วย ซึ่งหมายความว่าการกำหนดค่าว่างจะไม่ยกเลิกการลงทะเบียนตัวแปร
หากต้องการยกเลิกการลงทะเบียนตัวแปร คุณสามารถใช้ unset($foo) หรือ $foo=NULL
[13] คำสั่งการสืบค้น mysql จะมีคำสำคัญ
เมื่อ php ทำการสืบค้น mysql บางครั้งชื่อตาราง mysql หรือชื่อคอลัมน์ก็มีคำสำคัญ ในขณะนี้ การสืบค้น จะมีข้อผิดพลาด. ตัวอย่างเช่น หากชื่อตารางเรียงลำดับ จะเกิดข้อผิดพลาดระหว่างการสืบค้น วิธีง่ายๆ คือการเพิ่ม `[เหนือปุ่มแท็บ] ให้กับชื่อตารางหรือชื่อคอลัมน์ในคำสั่ง sql เพื่อแยกแยะความแตกต่าง เช่น เลือก * จาก `order`
[14] การอัปโหลดครั้งเดียวผ่านโปรโตคอล HTTP มีสองแนวคิดสำหรับวิธีการหลายไฟล์
ซึ่งเป็นการใช้วิธีเดียวกันสองครั้ง ขั้นตอนเฉพาะต้องได้รับการออกแบบด้วยตัวเอง
1. ตั้งค่ากล่องอินพุตไฟล์หลายไฟล์ในแบบฟอร์มและตั้งชื่อเป็นอาร์เรย์ดังนี้:
<form action="" method=post>
<ประเภทอินพุต=ชื่อไฟล์=usefile[]>
<ประเภทอินพุต=ชื่อไฟล์=usefile[]>
<ประเภทอินพุต=ชื่อไฟล์=usefile[]>
</form>
ด้วยวิธีนี้ ให้ทำการทดสอบต่อไปนี้บนฝั่งเซิร์ฟเวอร์:
echo "<pre">";
print_r($_FILES);
echo "</pre><";
2. ตั้งค่ากล่องใส่ไฟล์หลายไฟล์ในรูปแบบ แต่มีชื่อต่างกันดังนี้:
<form action="" method=post><
<ประเภทอินพุต=ชื่อไฟล์=usefile_a>
<ประเภทอินพุต=ชื่อไฟล์=usefile_b>
<ประเภทอินพุต=ชื่อไฟล์=usefile_c>
</form>
ทำการทดสอบเดียวกันบนฝั่งเซิร์ฟเวอร์:
echo "<pre">";
print_r($_FILES);
echo "</ก่อน>";