PHP5:استدعاء الوظائف الخارجية، وأخطاء التسجيل

StackOverflow https://stackoverflow.com/questions/278351

  •  07-07-2019
  •  | 
  •  

سؤال

أنا جديد جدًا على PHP، وكنت أحاول إعداد phpBB على موقعي المحلي.لديّ تثبيت دبيان لـ Apache2 وphp5.تم تشغيل برنامج تثبيت phpBB بشكل جيد، وتم توصيله بقاعدة البيانات وإنشاء جميع جداوله دون أي مشكلة.ولكن عندما حاولت فتح صفحة تسجيل الدخول، حصلت على استجابة 0 بايت.

أظهر القليل من البحث أنه لم يتجاوز الاتصال بـ mysql_pconnect ().يتم إنهاء ثنائي php بدون خطأ أو رسالة.لاشىء على الاطلاق.حاولت تشغيل الكود التالي:

<?php
$id = @mysql_pconnect('localhost','myusername', 'mypassword', true);
print "id=".$id."\n";
?>

ولن تتم طباعة السلسلة "id=" أبدًا.إنه لا يفعل شيئًا.لا أعرف أين أبحث لأرى الخطأ الذي حدث، أو ما الذي يحدث على الإطلاق.كل ما قمت بتثبيته هو "mysql" باستخدام الكمثرى ...ربما أفتقد شيئًا آخر؟

يجب أن تكون هذه مشكلة مسار في مكان ما.تم تصميم ملحق MySQL بشكل جيد في

/usr/lib/php5/20060613+lfs/mysql.so

إجابة:

الجيشي:أبلغني أن عامل التشغيل "@" يمنع الإخراج، بما في ذلك رسائل الخطأ (@echo off، هل من أحد؟)

تومهايغ:يجب تمكين الامتدادات بشكل صريح في ملف php.ini.بعد إضافة السطر "extension=mysql.so" إلى php.ini، تعمل التعليمات البرمجية التالية بشكل جيد:

% cat d.php 
<?php
ini_set('display_errors', true);
error_reporting(E_ALL | E_NOTICE);
$id = mysql_pconnect('localhost','myusername', 'mypassword', true);
print "id=".$id."\n";
?>
% php -c /etc/php5/apache2/php.ini  d.php
id=Resource id #4

مرح!

هل كانت مفيدة؟

المحلول

حاول القيام بذلك:

<?php
ini_set('display_errors', true);
error_reporting(E_ALL | E_NOTICE);
$id = mysql_pconnect('localhost','myusername', 'mypassword', true);
print "id=".$id."\n";
?>

ونرى ما هو الرد

يحرر

يبدو من تعليقك أن وحدة mysql غير مثبتة أو ممكّنة.يمكنك إلقاء نظرة على ملف php.ini الخاص بك ومعرفة ما إذا كان هناك سطر مثل

extension=mysql.so

إذا تم التعليق عليه بفاصلة منقوطة، فحاول إزالته وإعادة تشغيل Apache

نصائح أخرى

لاحظت للتو أنك تستخدم @ أمام mysql_pconnect().يؤدي ذلك إلى منع جميع الأخطاء، وهي في هذه الحالة فكرة سيئة جدًا.قم بإزالة ذلك ومن المحتمل أن ترى الإخراج.

خلاف ذلك:

تحقق من ملف php.ini الخاص بك، والذي يجب أن يكون في /etc/php5/Apache2/php.ini لنظام دبيان.

تحقق من وجود سطر يسمى Display_errors، واضبط ذلك على true إذا كنت تريد ظهور خطأ في متصفحك (لا يوصى به لنظام الإنتاج، ولكنه مفيد أثناء تصحيح الأخطاء والتطوير).

حدد log_errors لـ Apache لتسجيل أخطائك في ملف سجل أخطاء Apaches، والذي سيكون افتراضيًا في دبيان (ما لم يتم تحديد ملف خطأ آخر لموقع phpBB):

/var/log/Apache2/error.log

قم بإزالة "@" الذي يؤدي إلى كتم رسائل الخطأ التي يرسلها mysql_pconnect.

توثيق

في بعض الأحيان أواجه PHP في "ثقب أسود" عندما تجد وظيفة لا يمكنها العثور عليها.

هل يمكنك التحقق من تثبيت ملحق mysql بشكل صحيح؟

يمكنك القيام بذلك عن طريق إنشاء صفحة php مثل هذا:

<?php
phpinfo();
?>

احفظه في webroot الخاص بك، ثم قم بالوصول إليه.يجب أن يحتوي على جميع المعلومات حول ما يعمل عليه خادمك حاليًا فيما يتعلق بوحدات PHP.

أعتقد أنه ليس لديك ملحقات mysql مثبتة لـ PHP الخاص بك.منذ PHP5 أعتقد أنه امتداد PECL.إذا كنت تعمل على نظام التشغيل Windows، فيجب أن يكون هناك pecl.bat أو شيء من هذا القبيل في دليل php الخاص بك.فقط اذهب إلى هناك عبر وحدة التحكم وأدخل

pecl download mysql

ثم يجب أن يعمل كل شيء كما هو متوقع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top