اذهب إلى المحتوى
  • 0

نسخ احتياطي PHP

ايمن ميلاد

السؤال

السلام عليكم لدي كود تالي لعمل نسخ احتياطي لماذا لا يمكن عمل نسخ احتياطي علي localhost

<?php 
include('header.php');
if($_SESSION['rols_user'] != "مدير النظام"){
	
	exit("<div class='alert alert-danger col-md-6 text-center pan1' role='alert' >you don't have permission</div>");
}
	function backup(){
		
		$db_name = "sys_std";
		$db_user = "root";
		$password = "";
		
		
		$filename='database_backup_'.date('Y-m-d-h-i-s').'.sql';
		
		
		$result = exec('mysqldump '.$db_name.' --password='.$password.' --user='.$db_user.' --single-transaction >'.dirname(__FILE__).'/'.$filename,$output);
        
			    if($output==''){
			          
					  echo '<div class="alert alert-danger text-center col-md-6" role="alert">حذث خطأ في النسخ الأحتياطي</div>';

				}else {
					 
							 echo '<div class="alert alert-success text-center col-md-6" role="alert"><h3> تم النسخ الأحتياطي بنجاح';
				             echo '<p><a href="/'.dirname(__FILE__).'/'.$filename.'" target="_blank">اضغط هنا للتحميل ملف النسخ الأحتياطي</a></p></h3>';
							 echo '</div>';
				}
	}
?>
<!-------------------------------------------------------------------------------->	
<!------------------------------------header-------------------------------------->	
<!-------------------------------------------------------------------------------->

</div>
<div class="row">
   <div class="col-md-9 pan1">
			<div class="panel" style="color:#000;">
				<div class="panel-body text-center" style="font-size:14px; padding-left:40px;padding-right:40px;padding-bottom:25px;padding-top:25px;">
				
<?php

$os_name = php_uname('s');

              if($os_name == "Linux"){
				  
				  
				echo '<p><a href="?backup=now"><h3 style="margin-top: 35px;"> لنسخة احتياطية اضغط هنا </h3></a></p>';  
				if(isset($_GET['backup'])){
						if($_GET['backup'] == "now"){
								
                           backup();
					   
						}      
				}
				  
				  
			  }else{
				  
				 echo ' <div style="margin-top:25px;" class="text-center alert alert-danger" role="alert">لا يعمل النسخ الاحتياطي علي الهوست الافتراضي يجب ان يكون استضافة لينكس حقيقية حتي يمكن من تفعيل السكربت النسخ الاحتياطي</div>'; 
				  
			  }
	   


	   
?>
				
				   
				
				</div>
			</div>
		</div>
</div>


<!-------------------------------------------------------------------------------->	
<!------------------------------------Footer-------------------------------------->	
<!-------------------------------------------------------------------------------->

<?php
include('footer.php');
?>

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

اذا كنت تعمل على نظام Linux فى ال localhost سيمكنك القيام بعمل نسخة احتياطية حيث ان الكود المرفق يقوم بالتحقق من نظام التشغيل واذا كان Linux سيقوم بعمل نسخة احتياطية وما دون ذلك لن يقوم بعمل نسخة احتياطية اذا كنت تريد عمل نسخه احتياطية لديك يمكنك ازالة شرط التحقق فى الكود المرفق وهذا هو الشرط 

بتاريخ 10 دقائق مضت قال gamal_king:
 if($os_name == "Linux"){
				  
				  
				echo '<p><a href="?backup=now"><h3 style="margin-top: 35px;"> لنسخة احتياطية اضغط هنا </h3></a></p>';  
				if(isset($_GET['backup'])){
						if($_GET['backup'] == "now"){
								
                           backup();
					   
						}      
				}
				  
				  
			  }else{
				  
				 echo ' <div style="margin-top:25px;" class="text-center alert alert-danger" role="alert">لا يعمل النسخ الاحتياطي علي الهوست الافتراضي يجب ان يكون استضافة لينكس حقيقية حتي يمكن من تفعيل السكربت النسخ الاحتياطي</div>'; 
				  
			  }

قم بحذفه واستبداله بهذا الكود 

echo '<p><a href="?backup=now"><h3 style="margin-top: 35px;"> لنسخة احتياطية اضغط هنا </h3></a></p>';  
if(isset($_GET['backup'])){
  if($_GET['backup'] == "now"){

  backup();
  }      
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 42 دقائق مضت قال محمد عاطف11:

اذا كنت تعمل على نظام Linux فى ال localhost سيمكنك القيام بعمل نسخة احتياطية حيث ان الكود المرفق يقوم بالتحقق من نظام التشغيل واذا كان Linux سيقوم بعمل نسخة احتياطية وما دون ذلك لن يقوم بعمل نسخة احتياطية اذا كنت تريد عمل نسخه احتياطية لديك يمكنك ازالة شرط التحقق فى الكود المرفق وهذا هو الشرط 

قم بحذفه واستبداله بهذا الكود 

echo '<p><a href="?backup=now"><h3 style="margin-top: 35px;"> لنسخة احتياطية اضغط هنا </h3></a></p>';  
if(isset($_GET['backup'])){
  if($_GET['backup'] == "now"){

  backup();
  }      
}

 

قمت بالغاء شرط if  لكن سكربت ينزل فارغ 0  كليو بايت 

 

 

2.png

تم التعديل في بواسطة gamal_king
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

هل يمكنك ان تقوم بفتح موجه الأوامر (cmd) وتقوم بكتابة هذا الامر mysqldump  وترسل لى النتيجة .

اذا كنت تستخدم mamp او xampp  فيجب ان ترسل مرسال ملف mysqldump  في هذا السطر

بتاريخ 1 ساعة قال gamal_king:
		$result = exec('mysqldump '.$db_name.' --password='.$password.' --user='.$db_user.' --single-transaction >'.dirname(__FILE__).'/'.$filename,$output);

فيصبح الحل كالتالى اذا كنت تسخدم xampp و يوجد على ال c لديك 

$result = exec('C:\xampp\mysql\bin\mysqldump.exe '.$db_name.' --password='.$password.' --user='.$db_user.' --single-transaction >'.dirname(__FILE__).'/'.$filename,$output);
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 17 ساعة قال محمد عاطف11:

هل يمكنك ان تقوم بفتح موجه الأوامر (cmd) وتقوم بكتابة هذا الامر mysqldump  وترسل لى النتيجة .

اذا كنت تستخدم mamp او xampp  فيجب ان ترسل مرسال ملف mysqldump  في هذا السطر

فيصبح الحل كالتالى اذا كنت تسخدم xampp و يوجد على ال c لديك 

$result = exec('C:\xampp\mysql\bin\mysqldump.exe '.$db_name.' --password='.$password.' --user='.$db_user.' --single-transaction >'.dirname(__FILE__).'/'.$filename,$output);

هذا الذي ظهر 

لقطة شاشة 2024-02-07 092749.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

حسنا يجب اولا وضع مسار ال mysql فى ال path الخاص بالويندوز .

  1. قم بالضغط على زر الويندوز وقم بالبحث عن كلمة en ستظهر لك هذه الايقونة قم بالضغط عليها 1.thumb.png.2c62b9dcf98adaf042fdf2745979253f.png
  2. ستظهر لك هذه النافذه قم بالضغط على Environment Variablesimage.png.222a785244a5cca1db90ff7ef20a61f6.png
  3. ستظهر لك نافذة اخرى قم اولا باختيار ال path ثم اضغط على زر editimage.thumb.png.02049f55ec8ff61ede74b1c83672ed75.png
  4. ستظهر لك هذه النافذة قم بالضغط اولا على new ثم browse واختار مكان تنصيب ال mysql ثم مجلد bin 2.thumb.png.7b5941a3475f7e2534708d72a6ba43cc.png
  5. ثم قم باغلاق موجه الاوامر (cmd) وقم بفتحه مره اخرى واكتب امر mysqldumb يجب ان تظهر لك هذه الرسالة .image.png.2f748096ae70bb6815160530524d4953.png
  6. وبذلك قمنا بوضع ال mysql فى ال path الخاص بالويندوز .

واخيرا كما وضحت فى الحل السابق قم بتغير سطر الكود هذا بما لديك حيث ستقوم بوضع مسار تنصيب ال mysql لديك .

بتاريخ 19 ساعة قال محمد عاطف11:
$result = exec('C:\xampp\mysql\bin\mysqldump.exe '.$db_name.' --password='.$password.' --user='.$db_user.' --single-transaction >'.dirname(__FILE__).'/'.$filename,$output);
 

وسيقوم بالعمل جيدا واخذ نسخ احتياطية لديك على ال localhost .

ما قمنا به هنا لانك تعمل على نظام تشغيل ويندوز اما نظام تشغيل linux فان الكود الذى لديك سيعمل جيدا دون الحاجة الى اى من هذه الخطوات

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

انا ويندوز  11 بالعربي اسمه متغيرات البيئة 

هل هكدا صحيح اخترت مكان xampp  ثم مجلد msqli  ثم bin 

1.png

2.png

هكدا ظهرت بعد ان طبقت خطوات 

3.png

تم التعديل في بواسطة gamal_king
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 28 دقائق مضت قال gamal_king:

انا ويندوز  11 بالعربي اسمه متغيرات البيئة 

هل هكدا صحيح اخترت مكان xampp  ثم مجلد msqli  ثم bin 

1.png

2.png

هكدا ظهرت بعد ان طبقت خطوات 

3.png

نعم الان يعمل بالفعل .

تاكد ان قاعدة البيانات تحتوى على اى جداول و بيانات ليتم اخذ نسخة احتياطية منها

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 13 دقائق مضت قال محمد عاطف11:

نعم الان يعمل بالفعل .

تاكد ان قاعدة البيانات تحتوى على اى جداول و بيانات ليتم اخذ نسخة احتياطية منها

الله يرحم والديك اشتغل كود سؤال هل مثلا بعد عملية اضافة بيانات اعمل بعده نسخه احتياطي اجد جملة ادخال كتبت انه تم اضافة سطر وبه بيانات التي اضافته 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

ووالديك اللهم امين.

نعم النسخ الاحتياطى يتم على حسب المدة اللتى تريدها وعلى حسب كمية البيانات المدخله .

ممكن ان تقوم بعمل النسخ الاحتياطى يوميا مثلا او اسبوعيا او شهريا على حسب كم البيانات لديك . ولكن لا احبذ ان تقوم باخذ نسخه احتياطية كل ما يتم ادخال قيمة واحده او عدة قيم .

ونعم النسخ الاحتياطى يقوم اولا بانشاء الجدول ثم انشاء جملة اضافه لجميع البيانات فى هذا الجدول .

اما اذا كنت لا تريد ان يقوم بانشاء الجداول وتريد فقط القيم يمكنك اضافة هذه الجملة بعد اسم قاعدة البيانات .

--no-create-info

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...