برای گرفتن تاریخ فارسی در برنامه نویسی جوملا ابتدا می بایست زبان فارسی جوملا را در سیستم مدیریت محتوای جوملای خود نصب نموده و آن را به عنوان زبان پیش فرض انتخاب نمایید و سپس در صورتی که در جایی از برنامه نویسی سایت جوملای خود نیاز به استفاده و نمایش تاریخ شمسی و فارسی را داشتید از کد زیر استفاده نمایید.
در کد بالا در صورتی که قصد گرفتن تاریخ فعلی را داشته باشید از now استفاده می نمایید و در صورتی که تاریخ را از جایی دیگر مثلا از دیتابیس می گیرید می توانید مقدار آن را به جایی now قرار دهید. این تابع تاریخ میلادی ثبت شده را به تاریخ شمسی و فارسی تبدیل می نماید. دانلود زبان فارسی جوملا از این آدرس: http://extensions.joomla.org/extensions/languages/translations-for-joomla/17478
جوملا 1.0 مشکلات بسیاری در php 5.3.0 دارد که کاربران بسیاری این مشکلات را گزارش نموده اند.
هم اکنون برای وب سایت ها زمان آن رسیده به نسخه های بالاتر به روز رسانی شوند، زیرا نسخه 1.0 جوملا جزو نسخه هایی است که پشتیبانی نمی شود و باگ های بسیاری در آن وجود دارد. برای رویت آخرین نسخه جوملا به سایت رسمی http://joomla.org مراجعه نمایید.
پس از به روز رسانی نسخه php سرور به 5.3 و بالاتر مشکلات فراوانی در سایت جوملا نسخه 1.0 به وجود می آید که برای رفه مشکلات مواردی را در این مقاله برای شما بیان می نمایم. البته باز هم اعلام می نمایم که حتما جوملای خود را به آخرین نسخه به روز رسانی نمایید.
برای سازگاری جوملا 1.0 با php 5.3 موارد زیر را می بایست در سایت انجام دهید
در صورتی که مطالب در اکثر صفحات سایت نمایش داده نمی شود فایل Function.php موجود در آدرس /public_html/includes/Cache/Lite باز نموده.
برای رفع مشکل تماس با ما جوملا VCARD.CLASS.PHP ERROR کامپوننت COM_CONTACT نمایش به صورت سفید
برای رفع مشکل کامپوننت com_contact در صورتی که در سایت صفحه تماس با ما به صورت سفید نمایش داده می شود و در کنترل پنل خطای زیر را در تماس با ما مشاهده می نمایید:
Fatal error: Cannot redeclare quoted_printable_encode() in includes/vcard.class.php on line 74
فایل در آدرس includes/vcard.class.php را باز نموده و در خط 36 آن تابع quoted_printable_encode را بیابید. خطای اعلام شده تکرار تعریف این تابع می باشد برای جلوگیری از این اتفاق از تابع function_exists برای بررسی اینکه تابع قبلا تعریف شده و یا خیر استفاده نمایید.
if(!function_exists('quoted_printable_encode')) { // این بخش اضافه شود function quoted_printable_encode($input, $line_max=76) { /* ... */ } } // این بخش اضافه شود
زمان جوملا
تغییر جدیدی که در php 5.3 به وجود آمده نحوه تعریف زمان می باشد.
بهترین روشی که برای این مورد پیشنهاد می نمایم استفاده از .htaccess جهت تعریف زمان پیش فرض می باشد. کد زیر را به htaccess سایت خود اضافه نمایید:
# set the server timezone SetEnv TZ Australia/Victoria
DEPRECATED: FUNCTION EREGI() IS DEPRECATED IN INCLUDES/SEF.PHP ON LINE 533
در نسخه های جدید php علکرد تابع eregi با استفاده از تابع preg_match می باشد. بنابراین می بایست بخش هایی از سایت که از این مورد استفاده شده اصلاح گردد.
در صورتی که قصد دارید تمام فایل های موجود در یک فلدر را به فلدر دیگر توسط php انتقال دهید می توانید از کد زیر استفاده نمایید.
// Get array of all source files $files = scandir("source"); // Identify directories $source = "source/"; $destination = "destination/"; // Cycle through all source files foreach ($files as $file) { if (in_array($file, array(".",".."))) continue; // If we copied this successfully, mark it for deletion if (copy($source.$file, $destination.$file)) { $delete[] = $source.$file; } } // Delete all successfully-copied files foreach ($delete as $file) { unlink($file); }
در صورتی که قصد دارید فایلی توسط php از یک سرور به سرور دیگر انتقال دهید کد زیر را در فایل php خود ذخیره نمایید در بخش اطلاعات ftp شامل پارامترهای server , user و pass اطلاعات ftp سرور قبلی خود را درج نمایید و در پارامتر file نام فایل را در سروری که فایل هم اکنون در آن قرار دارد و در پارامتر localfile نام فایل را در سروری که قصد دارید فایل را به آن انتقال دهید درج نمایید و در نهایت فایل php را در سروری که می خواهید فایل را به آن انتقال دهید بارگذاری نموده و فایل php را از طریق مرورگر وب مرور نمایید. به همین راحتی فایل شما بین دو سرور انتقال می یابد.
$server = "example.com"; //target server address or domain name from we wana download file
در صورتی که می خواهید سرعت سایت خود را بالا ببرید و همچنین میزان بار استفاده شده بر روی سرور را کمک نمایید می توانید از php برای کش کردن صفحات سایت کمک بگیرید. کش کردن به آن معنی است که یک نسخه از صفحه مورد نظر بر روی سرور ذخیره می گردد و در درخواست کاربر بعدی به جای اجرا شدن صفحه مورد نظر فایل کش ذخیره شدن در سایت به کاربر نمایش داده می شود. شما همچنین می توانید در برنامه نویسی کش سایت خود زمان مشخص نمایید به عنوان مثال مشخص نمایید هر 15 کش جدید در سایت نوشته شود. مدت زمان کشی که تعیین می نمایید بسته به وضعیت سایت شما می باشد. در صورتی که سایت شما دائما در حال تغییر است کش را باید بسیار کم و در حد 1 دقیقه ست نمایید و در صورتی که سایت شما تغییرات خاصی ندارد می توانید کش حتی 1 ماهه ست نمایید. استفاده از سیستم کش باعث می شود بار بر روی به میزان قابل توجهی کاهش یابد زیرا دیگر لازم نیست برنامه php اجرا گردد و صفحه برای کاربر ارسال گردد. صفحه مورد نظر به مانند یک صفحه html لود می گردد. برای ایجاد سیستم کش در فایل php خود کافی است کد زیر نظر را در بالای فایل php خود کپی نمایید:
<?php $cachefile = "images/cache.html";
$cachetime = 15 * 60; // 5 minutes
// Serve from the cache if it is younger than $cachetime
if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile))) {
include($cachefile);
echo "<!-- Cached ".date('jS F Y H:i', filemtime($cachefile))." -->n";
exit;
}
ob_start(); // start the output buffer ?>
کد php بالا ابتدا به دنبال فایل کش بر روی سرور می گردد و در صورتی که زمان ایجاد آن مربوط به کمتر از 15 دقیقه بود فایل کش شده رو به جای اجرا کردن کد برای کاربر ارسال می نمایید و دستور php زیر را در پایین صفحه کپی نمایید
<?php // open the cache file for writing $fp = fopen($cachefile, 'w');
// save the contents of output buffer to the file fwrite($fp, ob_get_contents());
// close the file
fclose($fp);
// Send the output to the browser ob_end_flush(); ?>
کد بالا پس از اجرا شدن اسکریپت صفحه مورد نظر خروجی را می گیرد و در فایل کش ذخیره می نماید همانطوری که ملاحظه می فرمایید ایجاد سیستم کش از طریق برنامه نویسی php بسیار ساده است ولی به مقدار قابل توجهی در بار روی سرور تاثیر مثبت می گذارد.
phpMobilizer به صاحبان وب سایت قابلیت اضافه نمودن پشتیبانی سایت از موبایل را میدهد.
phpMobilizer چیست؟ به صورت اتوماتیک هر وب سایتی را به وب سایت موبایل تبدیل می نماید. phpMobilizer به مانند سایر مبدلهای سایت به نسخه موبایلی کار می کند به جز آنکه این برنامه بر روی سرور شما
اجرا می شود.
هدف این پروژه جهانی ساختن آن می باشد. فقط کافی است این برنامه را بر روی یک ساب دامنه از سرور خود بارگذاری نمایید و سپس کد مربوط به انتقال مرورگرهای موبایل را به سایت موبایلی در برنامه اصلی قرار دهید.
قابلیت ها
به آسانی نصب می شود، فقط کافی است فایل ها را بر روی ساب دامنه از سایت خود بارگذاری نمایید
هر وب سایتی را به نسخه موبایل تبدیل می نماید.
تصاویر را برای نمایش در نسخه موبایل تغییر سایز می دهد. فقط سایز آنها را تغییر نمی دهد، بلکه حجم آن ها را برای نمایش در موبایل کاهش می دهد
انتقال خودکار به نسخه موبایل سایت. البته می بایست کد به سایت اصلی اضافه گردد
جهت بررسی نسخه IE و یا هر نوع مرورگر دیگر می توانید از کد php زیر استفاده نمایید. این برنامه جهت بررسی مرورگر اکسپلورر نسخه 6 نوشته شده. برای سایر نسخه ها می توانید 6 را با سایر اعداد تعویض نمایید.
برخی موارد در PHP به آن نیاز پید می نمایید که تگ های خاصی از HTML را حذف نمایید که تابعی برای این کار در PHP وجود ندارد. تابع strip_tags نیز به این صورت عمل می نماید که تنها تگ های خاصی را که شما در پارامترهای آن تعریف می نمایید را اجازه نمایش به آن داده می شود. تابع PHP زیرا عکس strip_tags عمل می نماید و تگ هایی که شما مشخص می نمایید را از HTML حذف می نماید.
ابزارهای بسیاری برای کد نویسی PHP وجود دارند که با استفاده از آنها می توانید راحت تر برنامه نویسی نمایید. در زیر چند مورد را که مورد استفاده دارکوب نیز می باشد به شما نمایش داده ام.
Aptana PHP ویرایشگر متن باز PHP می باشد که در کنار Aptana Studio مورد استفاده قرار می گیرد. برای اطلاعات بیشتر به online documentation about Aptana PHP مراجعه نمایید.
PHPUnit ابزار کامل JUnit جهت تست و بررسی PHP 5 می باشد. ابزاری جهت تست برنامه های نوشته شده توسط PHP شما می باشد. تست کردن برنامه توسط فریم ورک PHPUnit بسیار ساده می باشد; برای نحوه استفاده به نحوه استفاده مراجعه نمایید.
ابزاری برای ویرایش کدهای PHP که توسط برنامه نویسان مورد استفاده قرار می گیرد، Sublime Text دارای امکانات جانبی بسیاری در باکس کناری آن می باشد. می توانید چندین ستون/ ردیف/ پنجره در هر پروژه باز نمایید ، موس را در چندین جای مختلف قرار دهید، کلیدهای میانبر برای آیتم های مختلف تعریف نمایید و سایر موارد. ویژگی مورد علاقه من مدیریت بسته ها می باشد ، که با برنامه نویس امکان نصب پلاگین های مختلف را می دهد تا از تابع های مختلفی استفاده نماید.
در صورتی که قصد استفاده از کتابخانه های محبوب PHP را دارید می توانید از این ابزار استفاده نمایید. به راحتی می توانید فایلcomposer.json در ریشه اصلی پروژه خود ایجاد نموده, و یک دستور را اجرا نمایید, و کلیه ارتباط ها بارگذاری می گردند و آماده استفاده می باشند. کتابخانه های بسیار در https://packagist.org
ابزاری جهت استفاده در پروژه های تیمی. در صورتی که چندین نفر بر روی یک فایل کار می نمایند و نیاز به بازگردانی به نسخه های قبلی باشد استفاده از این ابزار بسیار مناسب خواهد بود. به شما پیشنهاد می نمایم در مورد نحوه استفاده و امکانات به Git مراجعه نمایید.
ارسال اطلاعات رفع عیب و صفحه کنسول مرورگر. خروجی var_dump()ing برای شما ارسال خواهد شد, Jpop. این ابزار شبیه به FirePHP می باشد اما استفاده از آن بسیار ساده تر می باشد. این ابزار شبیه به Monolog می باشد, که اطلاعات رفع عیب PHP را به صورت پیچیده تر به خروجی ارسال می نماید.
Directus فریم ورک مدیریت محتوا نوشته شده بر پایه PHP می باشد که به شما امکان تغییر نحوه دریافت، پردازش و نمایش محتوا را می دهد. ;کافی است دستورهای SQL خود را بنویسید تا Directus سایر کارها را برای شما انجام دهد. در حقیقت می توانید از آن به عنوان یک سیستم مدیریت محتوا استفاده نمایید.
در برنامه نویسی PHP مواقعی پیش می آید که نیاز دارید دو تاریخ را به یکدیگر مقایسه نمایید و فاصله زمانی بین دو تاریخ را پیدا کنید که در بخش زیر نحوه بدست آوردن آن را به صورت کامل برای شما شرح خواهم داد. تاریخ ها را نمی توانید به صورت عادی از هم منها نمایید و می بایست آنها را به مقدار عددی تبدیل نمایید. برای انجام این کار می توانید از تابع strtotime استفاده نمایید. این تابع تاریخ شما به صورت تاریخ UNIX تبدیل می نماید که این تاریخ فاصله زمان تاریخ شما به ثانیه از زمان یکم 1970 می باشد. در زیر نحوه انجام این کار را به شما نمایش می دهم:
printf("%d years, %d months, %d days\n", $years, $months, $days);
در کد بالا تاریخ می توانید به صورت تاریخ و زمان نیز باشد. متغییر $diff دو تاریخ را به صورت عددی از یکدیگر منها می نماید و بنابراین $date2 می بایست زمان جدیدتر باشد. برای بدست آوردن تفاوت سالیانه دو تاریخ می بایست فاصله زمانی بدست آماده را به سال تبدیل نمایید و از تابع floor برای روند کردن آن استفاده نمایید. برای بدست آوردن تعداد ماه ابتدا می بایست تعداد سال ها به ثانیه را از تفاوت دو تاریخ به ثانیه کسر نموده و سپس آن را به ماه تبدیل نمایید و برای سایر واحدهای تاریخ نیز به همین ترتیب عمل نمایید. در صورتی که قصد دارید فاصله بین دو تاریخ را به ساعت و دقیقه و همچنین ثانیه بیان نمایید می توانید کدهای زیر را به کد اصلی خود اضافه نمایید.
ابزارهای بسیاری برای کد نویسی PHP وجود دارند که با استفاده از آنها می توانید راحت تر برنامه نویسی نمایید. در زیر چند مورد را که مورد استفاده دارکوب نیز می باشد به شما نمایش داده ام.
Aptana PHP ویرایشگر متن باز PHP می باشد که در کنار Aptana Studio مورد استفاده قرار می گیرد. برای اطلاعات بیشتر به online documentation about Aptana PHP مراجعه نمایید.
PHPUnit ابزار کامل JUnit جهت تست و بررسی PHP 5 می باشد. ابزاری جهت تست برنامه های نوشته شده توسط PHP شما می باشد. تست کردن برنامه توسط فریم ورک PHPUnit بسیار ساده می باشد; برای نحوه استفاده به نحوه استفاده مراجعه نمایید.
ابزاری برای ویرایش کدهای PHP که توسط برنامه نویسان مورد استفاده قرار می گیرد، Sublime Text دارای امکانات جانبی بسیاری در باکس کناری آن می باشد. می توانید چندین ستون/ ردیف/ پنجره در هر پروژه باز نمایید ، موس را در چندین جای مختلف قرار دهید، کلیدهای میانبر برای آیتم های مختلف تعریف نمایید و سایر موارد. ویژگی مورد علاقه من مدیریت بسته ها می باشد ، که با برنامه نویس امکان نصب پلاگین های مختلف را می دهد تا از تابع های مختلفی استفاده نماید.
در صورتی که قصد استفاده از کتابخانه های محبوب PHP را دارید می توانید از این ابزار استفاده نمایید. به راحتی می توانید فایلcomposer.json در ریشه اصلی پروژه خود ایجاد نموده, و یک دستور را اجرا نمایید, و کلیه ارتباط ها بارگذاری می گردند و آماده استفاده می باشند. کتابخانه های بسیار در https://packagist.org
ابزاری جهت استفاده در پروژه های تیمی. در صورتی که چندین نفر بر روی یک فایل کار می نمایند و نیاز به بازگردانی به نسخه های قبلی باشد استفاده از این ابزار بسیار مناسب خواهد بود. به شما پیشنهاد می نمایم در مورد نحوه استفاده و امکانات به Git مراجعه نمایید.
ارسال اطلاعات رفع عیب و صفحه کنسول مرورگر. خروجی var_dump()ing برای شما ارسال خواهد شد, Jpop. این ابزار شبیه به FirePHP می باشد اما استفاده از آن بسیار ساده تر می باشد. این ابزار شبیه به Monolog می باشد, که اطلاعات رفع عیب PHP را به صورت پیچیده تر به خروجی ارسال می نماید.
Directus فریم ورک مدیریت محتوا نوشته شده بر پایه PHP می باشد که به شما امکان تغییر نحوه دریافت، پردازش و نمایش محتوا را می دهد. ;کافی است دستورهای SQL خود را بنویسید تا Directus سایر کارها را برای شما انجام دهد. در حقیقت می توانید از آن به عنوان یک سیستم مدیریت محتوا استفاده نمایید.
در صورتی که بر روی سرور فایل فشرده در فرمت های zip ، gzip و سایر فرمت ها را دارید می توانید توسط PHP فایل را اکستراکت نمایید. برای انجام این کار می توانید از کد نمونه PHP زیر که توسط سایت رسمی PHP منتشر شده و در آدرس http://www.php.net/manual/en/ziparchive.extractto.phpآمده استفاده نمایید.
در صورتی که حجم فایل فشرده شما زیاد می باشد می بایست از تابع زیر برای افزایش زمان اجرای برنامه PHP استفاده نمایید.
ini_set('max_execution_time', 300);
برای انجام این کار کافی است تابع را در بالای کد کپی نمایید.
همچنین تابع آماده برای خارج سازی فایل ها از حالت فشرده در آدرس http://themergency.com/extract-zip-files-with-php/ وجود دارد که کافی است فایل unzip.php را بر روی سرور خود بارگذاری نموده و آدرس آن را در مرورگر رویت نمایید. فایل مورد نظر کلیه فایل های موجود در سرور را به شما نمایش می دهد و کافی است بر روی فایل فشرده خود کلیک نموده تا فایل اکستراکت گردد.
در برنامه نویسی PHP مواقعی پیش می آید که نیاز دارید دو تاریخ را به یکدیگر مقایسه نمایید و فاصله زمانی بین دو تاریخ را پیدا کنید که در بخش زیر نحوه بدست آوردن آن را به صورت کامل برای شما شرح خواهم داد. تاریخ ها را نمی توانید به صورت عادی از هم منها نمایید و می بایست آنها را به مقدار عددی تبدیل نمایید. برای انجام این کار می توانید از تابع strtotime استفاده نمایید. این تابع تاریخ شما به صورت تاریخ UNIX تبدیل می نماید که این تاریخ فاصله زمان تاریخ شما به ثانیه از زمان یکم 1970 می باشد. در زیر نحوه انجام این کار را به شما نمایش می دهم:
printf("%d years, %d months, %d days\n", $years, $months, $days);
در کد بالا تاریخ می توانید به صورت تاریخ و زمان نیز باشد. متغییر $diff دو تاریخ را به صورت عددی از یکدیگر منها می نماید و بنابراین $date2 می بایست زمان جدیدتر باشد. برای بدست آوردن تفاوت سالیانه دو تاریخ می بایست فاصله زمانی بدست آماده را به سال تبدیل نمایید و از تابع floor برای روند کردن آن استفاده نمایید. برای بدست آوردن تعداد ماه ابتدا می بایست تعداد سال ها به ثانیه را از تفاوت دو تاریخ به ثانیه کسر نموده و سپس آن را به ماه تبدیل نمایید و برای سایر واحدهای تاریخ نیز به همین ترتیب عمل نمایید. در صورتی که قصد دارید فاصله بین دو تاریخ را به ساعت و دقیقه و همچنین ثانیه بیان نمایید می توانید کدهای زیر را به کد اصلی خود اضافه نمایید.
دارکوب جهت توسعه اسکریپت بازی تراوین نیاز به برنامه نویس حرفه ای PHP دارد. جهت رویت توضیحات این اسکریپت بازی به توضیحات بازی تراوین در ویکی پدیا مراجعه نمایید. از برنامه نویسان علاقه مند دعوت می گردد رزومه خود را به آدرس info[at]joomir.com ارسال نمایند. برنامه نویسانی که تجربه بازی و توسعه این نرم افزار را دارند در اولویت هستند. در صورت نیاز به برقراری تماس تلفنی لطفا با شماره های تلفن تهران: 22083926 - 22085386 - 22082258 تماس حاصل فرمایید.
پروژه توسعه اسکریپت تراوین یک پروژه دائمی بوده که پس از اتمام فاز اول آن که در حدود 60 روز به طول خواهد انجامید فازهای بعدی آن آغاز خواهد گردید.
زمان کاری برنامه نویس از شنبه تا پنج شنبه 9 تا 5 بعد از ظهر خواهد بود و پروژه به صورت فشرده خواهد بود و برنامه نویس مورد نظر فقط بر روی همین پروژه فعالیت خواهد نمود.
در صورت نیاز و کمبود زمان لازم خواهد بود که برنامه نویس در خارج از زمان کاری نیز به توسعه اسکریپت بپردازد.
جوملا 1.0 مشکلات بسیاری در php 5.3.0 دارد که کاربران بسیاری این مشکلات را گزارش نموده اند.
هم اکنون برای وب سایت ها زمان آن رسیده به نسخه های بالاتر به روز رسانی شوند، زیرا نسخه 1.0 جوملا جزو نسخه هایی است که پشتیبانی نمی شود و باگ های بسیاری در آن وجود دارد. برای رویت آخرین نسخه جوملا به سایت رسمی http://joomla.org مراجعه نمایید.
پس از به روز رسانی نسخه php سرور به 5.3 و بالاتر مشکلات فراوانی در سایت جوملا نسخه 1.0 به وجود می آید که برای رفه مشکلات مواردی را در این مقاله برای شما بیان می نمایم. البته باز هم اعلام می نمایم که حتما جوملای خود را به آخرین نسخه به روز رسانی نمایید.
برای سازگاری جوملا 1.0 با php 5.3 موارد زیر را می بایست در سایت انجام دهید
در صورتی که مطالب در اکثر صفحات سایت نمایش داده نمی شود فایل Function.php موجود در آدرس /public_html/includes/Cache/Lite باز نموده.
برای رفع مشکل تماس با ما جوملا VCARD.CLASS.PHP ERROR کامپوننت COM_CONTACT نمایش به صورت سفید
برای رفع مشکل کامپوننت com_contact در صورتی که در سایت صفحه تماس با ما به صورت سفید نمایش داده می شود و در کنترل پنل خطای زیر را در تماس با ما مشاهده می نمایید:
Fatal error: Cannot redeclare quoted_printable_encode() in includes/vcard.class.php on line 74
فایل در آدرس includes/vcard.class.php را باز نموده و در خط 36 آن تابع quoted_printable_encode را بیابید. خطای اعلام شده تکرار تعریف این تابع می باشد برای جلوگیری از این اتفاق از تابع function_exists برای بررسی اینکه تابع قبلا تعریف شده و یا خیر استفاده نمایید.
if(!function_exists('quoted_printable_encode')) { // این بخش اضافه شود function quoted_printable_encode($input, $line_max=76) { /* ... */ } } // این بخش اضافه شود
زمان جوملا
تغییر جدیدی که در php 5.3 به وجود آمده نحوه تعریف زمان می باشد.
بهترین روشی که برای این مورد پیشنهاد می نمایم استفاده از .htaccess جهت تعریف زمان پیش فرض می باشد. کد زیر را به htaccess سایت خود اضافه نمایید:
# set the server timezone SetEnv TZ Australia/Victoria
DEPRECATED: FUNCTION EREGI() IS DEPRECATED IN INCLUDES/SEF.PHP ON LINE 533
در نسخه های جدید php علکرد تابع eregi با استفاده از تابع preg_match می باشد. بنابراین می بایست بخش هایی از سایت که از این مورد استفاده شده اصلاح گردد.
در صورتی که قصد دارید تمام فایل های موجود در یک فلدر را به فلدر دیگر توسط php انتقال دهید می توانید از کد زیر استفاده نمایید.
// Get array of all source files $files = scandir("source"); // Identify directories $source = "source/"; $destination = "destination/"; // Cycle through all source files foreach ($files as $file) { if (in_array($file, array(".",".."))) continue; // If we copied this successfully, mark it for deletion if (copy($source.$file, $destination.$file)) { $delete[] = $source.$file; } } // Delete all successfully-copied files foreach ($delete as $file) { unlink($file); }