سؤال

أحاول أن أفعل تفريغ MySQL عبر PHP.

هذا هو الكود

$backupFile = $table. "-". date("Y-m-d-H:i:s") . '.gz';
    //Command nog aanpassen....
    $command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname  | gzip > $backupFile";
    //$status = system($command);
    echo $backupFile ."<br>";
    $status = passthru($command, $a);
    echo "output:" .  $a;

قيمة $ A = 2. لكن لا يمكنني العثور على ما يعنيه. لا يمكنني العثور على ملف النسخ الاحتياطي أيضا في أي مكان.

أيه أفكار؟

هل كانت مفيدة؟

المحلول

لست متأكدا مما إذا كانت هذه هي المشكلة، لكن يبدو أن كلمة المرور الخاصة بك معلمة غير صحيحة.

إذا كنت تستخدم -p، فأنت بحاجة إلى الحصول على كلمة المرور بجوارها مباشرة، دون مسافة بيضاء، مثل ذلك:

$command = "mysqldump --opt -h $dbhost -u $dbuser -p$dbpass $dbname  | gzip > $backupFile";

أو استخدم LongwordWord = DBPass $.

علي سبيل المثال:

$command = "mysqldump --opt -h $dbhost -u $dbuser --password=$dbpass $dbname  | gzip > $backupFile";

من صفحة Mysqldump Man:

- passpassword [= كلمة المرور]، -p [كلمة المرور

كلمة السر لاستخدامها عند الاتصال بالخادم. إذا كنت تستخدم نموذج الخيار القصير (-p)، لا يمكنك الحصول على مسافة بين الخيار وكلمة المرور. إذا حذفت قيمة كلمة المرور التالية خيار -password أو -p على سطر الأوامر، تتم مطالبتك بأحد.

نصائح أخرى

يمكن أن تكون أيضا وجهة النسخ الاحتياطي الخاص بك. تأكد من أنك تقوم المستخدم الذي تقوم بتشغيل MySQLDump كما (في حالتك المحتملة على البيانات WWW-Data، أو بعض مستخدمي Apache الآخرين) لديه إذن كتابة إلى الدليل حيث تحاول كتابة النسخ الاحتياطي الخاص بك. في كثير من الأحيان سأحاول أمرا من سطر الأوامر .. ورؤيتها تعمل بشكل جيد .. لكنني جذر، أو مستخدمي .. لا www-بيانات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top