Запуск pg_restore через CMD с PHP не работает

#php #python #postgresql #cmd

#php #python #postgresql #cmd

Вопрос:

Я пытаюсь восстановить базу данных (файл «.backup») с помощью pg_restore с помощью cmd launch с PHP-кодом, но это не работает.

1- Я передаю в свою PHP-переменную весь cmd-код

 $cmd="cmd /c C:/Program Files/PostgreSQL/9.1/bin/pg_restore.exe -d ".$_POST['data2']." -i -h localhost -p 5432 -U ********** D:/backup/voirie.backup";
  

2- Я запускаю его

 exec($cmd);
  

Мой php работает без результата

введите описание изображения здесь

На моем сервере процесс запущен

введите описание изображения здесь

Другая информация

  • Вместо exec () я тестировал с system () и passthru ()
  • Я тестировал создание пакетного файла из моего php. Этот пакетный файл отлично работает при запуске его на сервере, но не из моего PHP-файла
  • Сгенерированный код в $ cmd был протестирован непосредственно из CMD на сервере, и он работает
  • Для других кодов на этом сервере я использую этот, который работает нормально: system("cmd /c C:/Python35-32/python.exe D:/python/serpent.py");
  • Я тестировал с этими кавычками без результата : $cmd='cmd /c "C:/Program Files/PostgreSQL/9.1/bin/pg_restore.exe" -d '.$_POST['data2'].' -i -h localhost -p 5432 -U ********** D:/backup/voirie.backup';

Комментарии:

1. Вероятно, проблема в пространстве в Program Files . Закройте это и повторите попытку.

2. Я пробовал это $cmd="cmd /c C:/program files/PostgreSQL/9.1/bin/pg_restore.exe -d ".$_POST['data2']." -i -h ... , это $ cmd =»cmd /c C:/Program Files/PostgreSQL/9.1/bin/pg_restore.exe -d «.$_POST[‘data2’].» -i -h … , this $cmd=»cmd /c C:/program files/PostgreSQL/9.1/bin/pg_restore.exe -d «.$_POST[‘data2’].» -i -h … ` и это $cmd="cmd /c ""C:\program files\PostgreSQL\9.1/bin\pg_restore.exe -d "".$_POST['data2']." -i -h ... без великолепного прогресса

3. Это работает с этим на сервере с помощью командной оболочки pg_restore -d provisoire -i -h localhost -p 5432 -U ********** D:/backup/voirie.backup , но не с моим PHP, но через несколько секунд процесс останавливается

4. Я бы использовал process monitor , чтобы увидеть, какой процесс действительно запущен, что он делает и почему происходит сбой.