Благодаря @Scoopy, я обнаружил, что exec() был отключен моим хостинг-провайдером. Тем не менее, я решил мою проблему, используя следующий код, который я нашел here: -
$db = mysql_connect ('localhost', 'username', 'pass') or die('not connected');
mysql_select_db('test', $db) or die('Not found');
$fp = fopen ('backup-file', 'r');
$fetchData = fread ($fp, filesize ('backup-file'));
$sqlInfo = explode (";\n", $fetchData); // explode dump sql as a array data
foreach ($sqlInfo AS $sqlData)
{
mysql_query ($sqlData) or die('Query not executed');
}
НО, код DEPRECATED. Итак, я составил этот код: -
$host = 'localhost';
$user = 'root';
$password = 'root';
$database = 'test';
$conn = new mysqli($host, $user, $password, $database);
$conn->autocommit(FALSE);
$fp = fopen('bkp-file', 'r');
$fetchData = fread($fp, filesize('bkp-file'));
$sqlInfo = explode(";\n", $fetchData); // explode dump sql as a array data
foreach ($sqlInfo AS $sqlData) {
$conn->query($sqlData);
}
$conn->commit();
$conn->close();
Этот код идеально подходит для использования. Он использует транзакции для предотвращения множественной записи.
Сделайте 'echo $ cmd;' и запустите напечатанную строку в консоли. Скорее всего, проблема заключается в новом символе строки перед '<' (если, конечно, его нет, и вы сделали это для форматирования рассматриваемого кода). Или путь к '$ restore_file' недопустим. – Cheery
@ Опишите, да, я сделал это для форматирования кода – khandelwaldeval
Если это общий сервер, вполне вероятно, что ваши скрипты не будут иметь права использовать 'exec'. Убедитесь, что ваш 'error_reporting' установлен в' E_ALL' и сообщите нам, какие сообщения вы получаете. – Scopey