سازگار نمودن مامبو 4.6.5 با PHP 5.3   

از دانشنامه جوملا فارسی - مامبو فارسی
پرش به: ناوبری، جستجو

مقدمه

بعد از بروز شدن PHP برخی از سرور‌ها به 5.3 PHP ، سایت‌هایی که با مامبو طراحی شده‌اند با مشکلاتی روبرو خواهند بود. در این مقاله مشکلات را با تغییر در کدنویسی‌های مامبو حل خواهیم نمود.

خطای مربوط به mosDBTable()

Fatal error: Call to undefined method mosMenu::mosDBTable() in /home/***/public_html/***/includes/core.classes.php on line 899

رفع خطای مربوط به mosDBTable()

برای رفع خطا فایل Mambo_Path/includes/database.php را با یک ویرایشگر استاندارد باز کنید. خطوط 783 الی 790 را پیدا کنید.


<source lang="php">

class mosDBTable extends mosDBAbstractRow {

   /** @var mosDatabase Database connector */
   var $_db = null;
   /**
    *    @return bool True if DB query failed.  Sets the error message
    */
   function queryTestFailure () {

</source>

و به شکل زیر دگرگون نمایید.


<source lang="php">

class mosDBTable extends mosDBAbstractRow {

   /** @var mosDatabase Database connector */
   var $_db = null;
   function mosDBTable ($table=, $keyname='id', $db=) {
       $this->mosDBAbstractRow($table, $keyname, $db);
   }
   /**
    *    @return bool True if DB query failed.  Sets the error message
    */
   function queryTestFailure () {

</source>

خطای Parameter 2 to frontpage()

Warning: Parameter 2 to frontpage() expected to be a reference, value given in /home/***/public_html/***/includes/Cache/Lite/Function.php on line 100

رفع خطای Parameter 2 to frontpage()

برای رفع خطا فایل Mambo_Path/includes/Cache/Lite/Function.php را با یک ویرایشگر استاندارد باز کنید. خطوط 72 الی 74 را پیدا کنید.


<source lang="php">

function call() {

   $arguments = func_get_args();

</source>

و به شکل زیر دگرگون نمایید.


<source lang="php">

function call() {

   $arguments = func_get_args();
   $numargs = func_num_args();
   for($i=0; $i < $numargs; $i++){
       $arguments[$i] = &$arguments[$i];
   }  

</source>

رفع عیب‌های احتمالی

اگر مشکل پابرجا بود، کد زیر را در PHP.ini قرار دهید.


<source lang="php">

E_ALL & ~E_STRICT & ~E_DEPRECATED

</source>

توجه : سرورهایی که CGI ران شده باشند و دسترسی روت به یوزر داده شده باشد قابلیت ایجاد و ویرایش این فایل را خواهند داشت. در غیر اینصورت مدیریت سرور وظیفه دارد این تغییر را اعمال نماید

همچنین در صورتی که خطای زیر و یا مشابه خطای زیر بوجود آمد!


Warning: Cannot modify header information - headers already sent by (output started at /home/***/public_html/***/includes/database.php:2273) in /home/***/public_html/***/includes/core.classes.php on line 424

Warning: Cannot modify header information - headers already sent by (output started at /home/***/public_html/***/includes/database.php:2273) in /home/***/public_html/***/includes/core.classes.php on line 2907

Warning: Cannot modify header information - headers already sent by (output started at /home/***/public_html/***/includes/database.php:2273) in /home/***/public_html/***/includes/core.classes.php on line 601

Warning: Cannot modify header information - headers already sent by (output started at /home/***/public_html/***/includes/database.php:2273) in /home/***/public_html/***/includes/core.classes.php on line 602

Warning: Cannot modify header information - headers already sent by (output started at /home/***/public_html/***/includes/database.php:2273) in /home/***/public_html/***/includes/core.classes.php on line 603

Warning: Cannot modify header information - headers already sent by (output started at /home/***/public_html/***/includes/database.php:2273) in /home/***/public_html/***/includes/core.classes.php on line 604

Warning: Cannot modify header information - headers already sent by (output started at /home/***/public_html/***/includes/database.php:2273) in /home/***/public_html/***/includes/core.classes.php on line 605


در انتهای فایل Mambo_Path/includes/database.php در خط 1134 فضای اضافی رو حذف نمایید تا در انتهای کدها تنها عبارت <? نمایش داده شود.

مشکل قسمت تماس با ما

در قسمت تماس با ما خطای زیر وجود خواهد داشت.

Fatal error: Cannot redeclare quoted_printable_encode() in /home/***/public_html/includes/vcard.class.php on line 36

رفع مشکل قسمت تماس با ما

برای رفع خطا در فایل Mambo_Path/includes/vcard.class.php باید قبل از خط 36:

<source lang="php">

// taken from PHP documentation comments function quoted_printable_encode($input, $line_max = 76) {

</source>

از دستور زیر استفاده کنید.


<source lang="php">

if(!function_exists('quoted_printable_encode')) {

 function quoted_printable_encode($input, $line_max=76, $space_conv=false)
 {
   /* ... */
 }

}

</source>

ضمناً باید کمی دقت شود که شروع دستور در کجا به پایان برسد و با { پایان دستور اعلام شود


Remembrance.png
توجه : قبل از ایجاد هرگونه تغییر در سورس، حتما نسخه پشتیبان تهیه نمایید.

تیم مامبولرن مسئولیتی در قبال مشکلات ناشی از اعمال نادرست این کدها نخواهد داشت.


تهیه شده توسط محمد محسنی


8.pngاستفاده از مطالب دانشنامه جوملا فارسی - مامبو فارسی با ذکر منبع ( دانشنامه جوملا فارسی ) و لینک مستقیم به http://docs.joomlafarsi.com بلامانع است.