سأقدم لك اليوم ملخصًا عن المشاكل التي تواجه مبتدئي PHP. نأمل أن تكون الأسئلة الـ 14 المطروحة أدناه مفيدة للمبتدئين في PHP.
1. لا يمكن نقل متغيرات
الحصول والنشر والجلسة بين الصفحات في أحدث إصدار من PHP، تم إيقاف تشغيل المتغيرات العامة التلقائية، لذا للحصول على المتغيرات المرسلة من الصفحة السابقة، استخدم $_GET['foo'], $_POST. [ 'foo'],$_SESSION['foo'] للحصول عليه. بالطبع، يمكنك أيضًا تعديل المتغيرات العامة التلقائية لتكون قيد التشغيل (تم تغيير php.ini إلى Register_globals = On)؛ مع الأخذ في الاعتبار التوافق، فمن الأفضل أن تجبر نفسك على التعرف على طريقة الكتابة الجديدة.
2. عندما يستخدم apache2 أسلوب get لتمرير المعلمات الصينية ضمن Win32، سيحدث خطأ
Test.php?a=Hello&b=Hello.
سيؤدي تمرير المعلمات إلى حدوث خطأ
داخلي (مرحبًا )."&b=".urlencode (مرحبًا بك)
...
3. لا تعمل الجلسة ضمن
نظام php.ini بشكل افتراضي على session.save_path = /tmp.
من الواضح أن هذا هو التكوين ضمن نظام Linux تحت win32 غير قادر على قراءة وكتابة ملف الجلسة، مما يجعل الجلسة غير قابلة للاستخدام
. فقط قم بتغييرها إلى المسار المطلق، على سبيل المثال، session.save_path = c:windowstemp
4. عرض معلومات الخطأ
عندما يكون العرض_خطأ = قيد التشغيل و error_reporting = E_ALL في php.ini، سيتم عرض كافة الأخطاء والمطالبات، ومن الأفضل تشغيلها أثناء التصحيح لتصحيح الأخطاء. إذا كنت تستخدم طريقة كتابة PHP السابقة، فستكون معظم رسائل الخطأ حول متغيرات غير محددة. ستكون هناك مطالبة عند استدعاء متغير قبل تعيين قيمة له، والحل هو اكتشافه أو حمايته.
على سبيل المثال، لعرض $foo، يمكنك if(isset($foo)) echo $foo أو echo @$foo
5. لا يمكن لـ Mail() إرسال رسائل بريد إلكتروني ضمن Win32
. يمكن لـ Sendmail الذي تم تكوينه ضمن Linux الإرسال ضمن win32 اتصل بخادم SMTP. لإرسال رسائل البريد الإلكتروني، قم بتعديل SMTP لـ php.ini = ip //ip هو خادم SMTP بدون وظيفة التحقق (يصعب العثور عليه على الإنترنت). إرسال مباشرة إلى خادم البريد الإلكتروني للطرف الآخر بدلاً من خادم إعادة التوجيه.
6. إذا لم يتم تعيين كلمة المرور للتثبيت الأولي لـ mysql، فيجب عليك استخدام
تحديث mysql.user set كلمة المرور = "yourpassword" حيث المستخدم = "root"
لتغيير كلمة المرور
7.
عادةً ما يحدث رأس الخطأ الذي تم إرساله بالفعل عندما قد يكون هناك عدة أسباب: 1. تقوم بـ PRING أو ECHO قبل استخدام HEADER 2. يوجد سطر فارغ أمام ملفك الحالي 3. ربما تكون قد قمت بتضمين ملف ويوجد سطر فارغ في نهاية الملف. الملف أو سيحدث هذا الخطأ في الإخراج.
8. إذا لم يكن هناك تغيير بعد تغيير php.ini،
فأعد تشغيل خادم الويب، مثل IIS وApache وما إلى ذلك، ثم سيتم تطبيق أحدث الإعدادات
9. تم تثبيت PHP في عام 2003 (طريقة تثبيت ISAPI هي
يبدو أن ملف php4isapi.dll الخاص بـ PHP4 به بعض التعارض مع إصدار 2003، ولا يمكن تثبيته إلا في وضع CGI:
الخطوة
1، قم أولاً بتنزيل برنامج التثبيت ضمن www.php.net ، لقد قمت بتثبيته. : php-4.2.3-installer.exe، يمكنك أيضًا العثور على أحدث إصدار، وتأكد من بدء تشغيل IIS6.0 وإمكانية الوصول إليه قبل تثبيت php-4.2.3-installer.exe. بعد التثبيت، انتقل إلى موقع الويب الافتراضي-->تكوين التطبيق؛
الخطوة 2: انقر فوق ملحق خدمة الويب-->ملحق خدمة الويب الجديد؛
الخطوة 3: الامتداد-->php، ثم قم بإضافة
؛ المسار
الخطوة 5: فقط قم بتأكيد
الخطوة 6: حدد ملحق خدمة PHP وانقر فوق السماح.
10. في بعض الأحيان لا تعمل عبارة SQL.
أسهل طريقة لتصحيح فشل عملية قاعدة البيانات هي تكرار جملة SQL ومعرفة ما إذا كان من الممكن الحصول على قيمة المتغير.
11. الفرق بين التضمين والطلب
لا يوجد فرق كبير بين الاثنين. إذا كان الملف المراد تضمينه غير موجود، فسيطالبك التضمين بإشعار، ثم يستمر في تنفيذ العبارة التالية، ويطالبك بخطأ فادح ويخرج حسب اختباري، كلاهما ضمن النظام الأساسي 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؛
}
www.devdao.com
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. قم بإعداد مربعات إدخال ملفات متعددة في النموذج وقم بتسميتها بمصفوفات، كما يلي:
<طريقة الإجراء = "" = النشر>
<نوع الإدخال=اسم الملف=ملف الاستخدام[]>
<نوع الإدخال=اسم الملف=ملف الاستخدام[]>
<نوع الإدخال=اسم الملف=ملف الاستخدام[]>
</النموذج>
بهذه الطريقة، قم بإجراء الاختبار التالي على جانب الخادم
صدى "<pre>";
print_r($_FILES);
صدى "</pre>";
2. قم بتعيين مربعات إدخال ملفات متعددة في النموذج، ولكن بأسماء مختلفة، كما يلي:
<form action=""method=post>
<نوع الإدخال=اسم الملف=usefile_a>
<نوع الإدخال=اسم الملف=usefile_b>
<نوع الإدخال=اسم الملف=usefile_c>
</النموذج>
قم بنفس الاختبار على جانب الخادم:
صدى "<pre>";
print_r($_FILES);
صدى "</pre>";