چگونه خطای نصب افزونه ها را از مدیریت افزونه ها برطرف کنیم   

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

مقدمه

شما سایتی را در لوکال طراحی کرده‌اید، تمام قسمت‌ها بدرستی کار می‌کند، بعد از آپلود کردن آن در سرور تصمیم می‌گیرید که افزونه‌ای را نصب کنید ولی با خطاهایی روبرو می‌شوید.

حل خطاها هنگام نصب افزونه

تنظیمات FTP را در configuration.php فعال و تلاش می‌کنید که پلاگین، قالب، زبان را نصب نمایید ولی با خطاهای زیر مواجه می‌شوید.

  • JFolder::create: Infinite loop detected
  • JFTP::store: Bad response
  • Warning! - Failed to move file

یعنی اینکه یک سری از تنظیمات اشتباه در سرور شما وجود دارد.

ابتدا از وارد مدیریت جوملا شده و ← تنظیمات کلیسرور را انتخاب نمایید. فیلد اول مسیر پوشه Temp را مشخص می‌کند. شما در این قسمت مسیر فعلی این پوشه در سرور را وارد کنید.

چندین راه برای پیدا کردن این مسیر وجود دارد که ساده ترین آن ساختن یک فایل path.php با کدهای زیر است:


<?php
  echo getcwd();
?>


آدرس www.yoursite.com/path.php را در مرورگر وارد کنید. با این کار مسیر درست پوشه‌ها (جهت تنظیم در تنظیمات کلی) را نمایش می‌دهد. شما باید فایل path.php را در /tmp کپی کنید.

وقتی که شما از FTP نمی‌توانید استفاده کنید باید تنظیمات آن به علاوه سطح دسترسی به فایل‌ها و پوشه‌ها را تنظیم کنید.

یک مشکلی که وجود دارد اینست که پوشه‌های زیادی وجود دارند که سطح دسترسی (Permission) تنظیمات پیش فرض آنها 755 است که برای امنیت بیشتر تنظیم شده است، اما این سطح دسترسی برای نصب برخی افزونه‌ها کافی نیست.

اگر شما سطح دسترسی را به 777 تغییر دهید قادر به نصب و حذف افزونه‌ها خواهید بود ولی این سطح دسترسی امن نیست.

شما می‌توانید به براحتی یک فایل php ایجاد کنید که سطح دسترسی پوشه‌های مورد نیاز برای نصب را به 777 تنظیم کند و بعد از اینکه فرآیند نصب به اتمام رسید سطح دسترسی را به حالت قبل بازگردانید.


/administrator/backups/
/administrator/components/
/administrator/language/
/administrator/language/en-GB/
/administrator/language/fa-IR/
/administrator/modules/
/administrator/templates/
/components/
/images/
/images/banners/
/images/stories/
/language/
/language/en-GB/
/language/fa-IR/
/language/pdf_fonts/
/modules/
/plugins/
/plugins/content/
/plugins/editors/
/plugins/editors-xtd/
/plugins/search/
/plugins/system/
/plugins/user/
/plugins/xmlrpc/
/tmp/
/templates/
/cache/


همانطور که می‌بینید زبان دیگری هم از قبل نصب شده است، بنابراین به راحتی می‌توانید زبان‌های دیگری را به لیست زیر اضافه نمایید.

فایل chmod.php را ایجاد کرده و کدهای زیر را در آن قرار دهید.


<?php
if ($_GET['chmod']) { $ftp_chmod = $_GET['chmod']; } else { $ftp_chmod = "0755"; }
echo "chmod=".$ftp_chmod;

$ftp_server='your server';
$ftp_user='the user';
$ftp_pass='the password';
$conn_id = ftp_connect("$ftp_server");
ftp_login($conn_id, $ftp_user, $ftp_pass);

if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/administrator/backups/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/administrator/components/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/administrator/language/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/administrator/language/en-GB/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/administrator/language/fa-IR/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/administrator/modules/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/administrator/templates/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/components/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/images/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/images/banners/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/images/stories/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/language/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/language/en-GB/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/language/fa-IR/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/language/pdf_fonts/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/modules/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/plugins/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/plugins/content/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/plugins/editors/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/plugins/editors-xtd/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/plugins/search/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/plugins/system/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/plugins/user/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/plugins/xmlrpc/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/tmp/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/templates/')) { echo "<!--succes-->
"; } else { echo "failed"; }
if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' /httpdocs/cache/')) { echo "<!--succes-->
"; } else { echo "failed"; }

ftp_close($conn_id);
?>


زمانیکه آدرس www.yoursite.com/chmod.php?chmod=0777 را در مرورگر وارد نمایید تمام دایرکتوری مورد نظر به سطح دسترسی 777 تنظیم می‌شود.
سپس با استفاده مقاله آموزش تنظیمات لایه FTP در جوملای 1.5 تنظیمات FTP را انجام دهید. بعد از انجام تنظیمات FTP میتوانید افزونه های جوملا را نصب کنید.

بازگردان به حالت قبل

برای بازگرداندن به حالت امن باید در نوار آدرس مرورگر www.yoursite.com/chmod.php?chmod=0755 را بنویسید.

برای استفاده از امکان FTP باید کد زیر را به انتهای chmod.php اضافه کنید


<?php

// your ftp credentials
$ftp_server='ftp.yourserver.com';
$ftp_user='yourusername';
$ftp_pass='yourpassword';

// where is Joomla installed? (trailing slash required)
$base = '/public_html/web/';

// what files or directories need chmod applied? (trailing slash optional)
$dirs = array( 'administrator/backups',
               'administrator/components',
               'administrator/language',
               'administrator/language/en-GB',
               'administrator/modules',
               'administrator/templates',
               'administrator/cache',
               'components',
               'images',
               'images/banners',
               'images/stories',
               'media',
               'language',
               'language/en-GB',
               'language/pdf_fonts',
               'modules',
               'plugins',
               'plugins/content',
               'plugins/editors',
               'plugins/editors-xtd',
               'plugins/search',
               'plugins/system',
               'plugins/user',
               'plugins/xmlrpc',
               'tmp',
               'templates',
               'cache'
             );

// default to safe 0755 setting
if ($_GET['chmod']) {
    $ftp_chmod = $_GET['chmod']; 
} else {
    $ftp_chmod = "0755"; 
}
echo "chmod=".$ftp_chmod.'<br/>';

// connect via ftp and apply chmod
$conn_id = ftp_connect("$ftp_server");
ftp_login($conn_id, $ftp_user, $ftp_pass);
foreach( $dirs as $dir ){
    if (ftp_site($conn_id, 'CHMOD '.$ftp_chmod.' '.$base.$dir)) { 
        echo "success "; 
    } else { 
        echo "failed "; 
    }
    echo $base.$dir.'<br/>';
} 
ftp_close($conn_id);

echo 'DONE';
?>



منبع : http://docs.joomla.org/How_to_solve_Installation_errors_Extension_Manager

ترجمه: شهاب مطاع پور

ویرایش: گروه آموزش - تیم جوملا فارسی

Indent support.png
هر گونه سوال و یا مشکلی در این رابطه دارید، می‌توانید در انجمن تخصصی تیم جوملا فارسی جستجو کرده و در صورت عدم دریافت نتیجه مورد نظر، سوال جدیدی را مطرح کنید.
8.pngاستفاده از مطالب دانشنامه جوملا فارسی - مامبو فارسی با ذکر منبع ( دانشنامه جوملا فارسی ) و لینک مستقیم به http://docs.joomlafarsi.com بلامانع است.