سازگار نمودن مامبو 4.6.5 با PHP 5.3
محتویات
مقدمه
بعد از بروز شدن PHP برخی از سرورها به 5.3 PHP ، سایتهایی که با مامبو طراحی شدهاند با مشکلاتی روبرو خواهند بود. در این مقاله مشکلات را با تغییر در کدنویسیهای مامبو حل خواهیم نمود.
خطای مربوط به mosDBTable()
رفع خطای مربوط به 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()
رفع خطای 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>
ضمناً باید کمی دقت شود که شروع دستور در کجا به پایان برسد و با { پایان دستور اعلام شود
تیم مامبولرن مسئولیتی در قبال مشکلات ناشی از اعمال نادرست این کدها نخواهد داشت.
تهیه شده توسط محمد محسنی
![]() |