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

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

تنظیمات 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) تنظیمات پیش فرض آنها ۷۵۵ است که برای امنیت بیشتر تنظیم شده است، اما این سطح دسترسی برای نصب برخی افزونه‌ها کافی نیست.

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

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

 

/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 را در مرور گر وارد نمایید تمام دایرکتوری مورد نظر به سطح دسترسی ۷۷۷ تنظیم می‌شود.
بعد از انجام تنظیمات 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';
?>