[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 وerror_reporting = E_ALL، سيتم عرض كافة الأخطاء والمطالبات، ومن الأفضل تشغيلها أثناء التصحيح لتصحيح الأخطاء. إذا كنت تستخدم طريقة كتابة PHP السابقة، فإن معظم رسائل الخطأ تكون غير محددة المتغيرات. ستكون هناك مطالبة عند استدعاء متغير قبل تعيين قيمة له، والحل هو اكتشافه أو حمايته.
على سبيل المثال، لعرض $foo، يمكنك if(isset($foo)) echo $foo أو echo @$foo
[5] mail() لا يمكنه إرسال رسائل
البريد الإلكتروني ضمن Win32 التي تم تكوينها تحت Linux، ولكن عليك الاتصال smtp ضمن win32. يتم استخدام الخادم لإرسال رسائل البريد الإلكتروني وتعديل SMTP لـ php.ini = ip //ip هو خادم smtp بدون وظيفة التحقق (يصعب العثور عليه عبر الإنترنت).
أفضل حل لإرسال رسائل البريد الإلكتروني في php هو استخدام مأخذ التوصيل للإرسال مباشرة إلى خادم البريد الإلكتروني الخاص بالطرف الآخر بدلاً من خادم إعادة التوجيه.
[6] إذا لم يتم تعيين كلمة المرور للتثبيت الأولي لـ MySQL، فيجب عليك استخدام تحديث mysql.user set كلمة المرور = "yourpassword" حيث 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 . ما تم تثبيته هو: php-4.2.3-installer.exe. يمكنك أيضًا العثور على أحدث إصدار. تأكد من بدء تشغيل IIS6.0 وإمكانية الوصول إليه قبل تثبيت php-. 4.2.3-installer.exe. بعد التثبيت، انتقل إلى موقع الويب الافتراضي->تكوين التطبيق.
الخطوة 2: انقر فوق ملحق خدمة الويب-->ملحق خدمة الويب الجديد.
الخطوة 3: الامتداد-->php، ثم أضف
الخطوة 4: ابحث عن المسار إلى php.exe وأضفه.
الخطوة الخامسة: التأكيد وهذا كل شيء!
الخطوة 6: حدد ملحق خدمة PHP وانقر فوق السماح.
[10] في بعض الأحيان لا تعمل عبارة SQL وتفشل عملية قاعدة البيانات. أسهل طريقة لتصحيح الأخطاء هي تكرار جملة SQL ومعرفة ما إذا كان من الممكن الحصول على قيمة المتغير.
[11]لا يوجد فرق كبير بين
include و require
في حالة عدم وجود الملف المراد تضمينه، يرسل التضمين إشعارًا، ثم يستمر في تنفيذ العبارة التالية، ويطالب بخطأ فادح ويخرج.وفقًا للاختبار الذي أجريته، ضمن النظام الأساسي win32، يتم تضمينها أولاً ثم تنفيذها، لذلك من الأفضل عدم تضمين أو طلب بيانات في الملفات المضمنة، مما قد يسبب ارتباكًا في الدليل. ربما يكون الوضع مختلفًا في ظل *nux، ولم أختبره بعد.
إذا كنت لا تريد تضمين الملف عدة مرات، فيمكنك استخدام include_once أو require_once## لقراءة بيانات المستند وكتابتها.
وظيفة ص($file_name) {
$filenum=@fopen($file_name,"r ");
@flock($filenum,LOCK_SH);
$file_data=@fread($filenum,filesize($file_name ));
@f Close($filenum);
إرجاع $file_data؛
}
الدالة ث($file_name,$data,$method="w"){
$filenum=@fopen($file_name,$method );
قطيع($filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
fClose($filenum);
إرجاع $file_data؛
}
[12] الفرق بين isset() وempty()
هو أن كلاهما يستخدم لاختبار المتغيرات، لكن isset() يختبر ما إذا كان المتغير قد تم تعيين قيمة له، بينما يختبر فارغ() ما إذا كان المتغير قد تم تعيين قيمة له القيمة فارغة.
إذا تمت الإشارة إلى متغير في PHP دون تعيين قيمة له، فهذا مسموح به، ولكن سيكون هناك إشعار مطالبة إذا تم تعيين قيمة فارغة للمتغير، $foo="" أو $foo=0 أو $foo=false، ثم تُرجع فارغة($ foo) صحيحًا، وترجع isset($foo) أيضًا صحيحًا، مما يعني أن تعيين قيمة فارغة لن يؤدي إلى إلغاء تسجيل متغير.
لإلغاء تسجيل متغير، يمكنك استخدام unset($foo) أو $foo=NULL
[13] يحتوي بيان استعلام mysql على كلمات رئيسية
عندما يقوم php بالاستعلام عن mysql، في بعض الأحيان يحتوي اسم جدول mysql أو اسم العمود على كلمات رئيسية في هذا الوقت سوف تكون هناك أخطاء. على سبيل المثال، إذا كان اسم الجدول ترتيبًا، فسيحدث خطأ أثناء الاستعلام، والطريقة البسيطة هي إضافة `[فوق مفتاح علامة التبويب] إلى اسم الجدول أو اسم العمود في عبارة SQL لتمييزه، على سبيل المثال، حدد. * من `الطلب`
[14] التحميل لمرة واحدة من خلال بروتوكول HTTP هناك فكرتان لطريقة الملفات المتعددة
، وهما تطبيقان لنفس الطريقة. يجب أن تصمم الإجراءات المحددة بنفسك.
1. قم بتعيين مربعات إدخال ملفات متعددة في النموذج وقم بتسميتها في صفائف، كما يلي:
<form action="" Method=post>
<نوع الإدخال=اسم الملف=ملف الاستخدام[]>
<نوع الإدخال=اسم الملف=ملف الاستخدام[]>
<نوع الإدخال=اسم الملف=ملف الاستخدام[]>
</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);
صدى "</قبل>";