سؤال

لا أفعل قدرًا كبيرًا من أعمال PHP ولم أستخدم Bcompiler من قبل ، لكنني أقوم بترحيل موقع PHP إلى خادم جديد ولا يمكنني الحصول على هذا العمل.

يبدو أن هناك فئة تم تجميعها مع bcompiler 'class.viewimage.php' - أنه يحتوي على رمز مضغوط BZ 'BZH91AY & sy ؛ iu ...'

ثم هناك ملف PHP منتظم يطلق على هذه الفئة:

require('class.viewimage.php');
$my_image = NEW ViewImage ($MEDIALIB->Filestore);

عند تشغيل هذا الرمز ، فإنه يصيب محتويات النص للفئة المترجمة في المتصفح ('BZH91AY & sy ؛ iu ...'). إنه خط المتطلبات الذي يسبب هذا. يبدو لي أن PHP لا يعرف بطريقة سحرية أن هذا هو رمز تم تجميعه.

على حد علمي ، قمت بتثبيت bcompiler على النظام لأن هذا الرمز لم يعد ينهار (وكان الانهيار عندما قمت بالترحيل لأول مرة):

if (!extension_loaded('bcompiler')) {
    $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
    dl($prefix . 'bcompiler.' . PHP_SHLIB_SUFFIX);
}

أي مساعدة موضع تقدير.

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

المحلول

بينما واجهت مشاكلي الخاصة مع PHP Bcompiler ، باستخدام include() أو require() للوصول إلى الكود المترجم (تم تجميعه باستخدام bcompiler_write_file()) على جهاز مع وحدة Bcompiler المثبتة وتمكينه يجب أن تعمل.

http://us2.php.net/manual/en/function.bcompiler-read.php:

ملحوظة:

يرجى استخدام تضمين أو طلب عبارات لتحليل Bytecodes ، إنها طريقة أكثر قابلية ومريحة من استخدام هذه الوظيفة.

لا يوجد فقط العديد من الأخطاء ، ولكن الإصدارات غير متوافقة مع بعضها البعض ، وهذا ما أعتقد أنه مشكلتك.

على سبيل المثال ، أجهزتي (غير متوافقة):

CentOS 5.5, PHP 5.2.10, Apache 2.2.3, x86_64
----
bcompiler version   0.9.3-devs
current bytecode version    0.21
can parse bytecode version  0.7, 0.9, 0.11, 0.12, 0.14, 
0.18, 0.21

Mac OS X 10.6, PHP 5.3.3, Apache 2.2.15, i386
----
bcompiler version   0.9.3-devs
current bytecode version    0.22
can parse bytecode version  0.20, 0.22

لقد قدمته كخطية لحزمة PECL.

نصائح أخرى

يعتبر PHP أن جميع الملفات تتطلب/تضمين نصًا عاديًا ، وستعاملها على هذا النحو حتى تكتشف إما <? (SPORTTAG) ، <?php (علامة عادية) ، أو <% (علامة ASP) تسلسل الأحرف في الدفق ، وبعد ذلك يتحول إلى وضع PHP ، حتى يصل إلى نهاية البرنامج النصي أو علامة الإغلاق المقابلة (?>, %>). على هذا النحو ، لا توجد وسيلة لعلاج PHP لعامل المدخلات المترجمة كرمز البرنامج. حتى eval لن يساعد ، لأن ذلك يستدعي نفس المحلل الذي لم يؤدي إلى إخراج المدخلات الثنائية في المقام الأول.

الكود Bzipped نفسه غير قابل للتنفيذ أيضًا ، ما لم يتم لفه بواسطة كعب استخراج تلقائي.

نظرًا لأنه يبدو أنه Bzipped ، فلماذا لا تحاول عدم تجنب الملف وترى ما تحصل عليه؟ ربما تم تنزيل ملف الفصل كتوزيع .BZ2 وتم إعادة تسميته ببساطة. قد تحتوي النسخة غير المضغوطة على الأغلفة المناسبة للسماح بالتنفيذ.

لقد كنت أعاني منذ فترة طويلة للعمل مع Bcompiler ، لكن من المثير للدهشة أنني وجدت حلاً سهلاً للغاية حيث يمكنك تجميع موقع الويب بالكامل بنقرة واحدة. يمكنك متابعة خطوات الربط:-

  1. قم بتنزيل وتثبيت Wampserver (أي إصدار).

  2. قم بتنزيل وتثبيت Wampserver PHP Addons إصدار PHP 5.2.5

  3. انقر على Wampserver -> PHP -> الإصدار -> 5.2.5 من شريط المهام (سيغير الإصدار الحالي من PHP إلى 5.2.5).

  4. حدد Wampserver -> php -> extension -> php_bcompiler (سيمكن Bcompiler على جهاز الكمبيوتر الخاص بك).

    تكون الخطوات المذكورة أعلاه كافية إذا تمكنت من برنامج البرنامج النصي الخاص بك ولكن لتسهيل سهولة المتابعة مع الخطوات التالية.

  5. تحميل Bcompiler واجهة المستخدم الرسومية.

  6. حدد المجلد الموجود على واجهة المستخدم الرسومية Bcompiler وسيؤدي ذلك إلى برنامج الويب الخاص بك بالكامل بنقرة واحدة.

استمتع PHP | استمتع بمفتوح المصدر

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