Команда ниже успешно загружает шейп-файл в postgresql через cmd.
shp2pgsql -I -s 4326 E:\SAITEJA_AND_VISHAL\sampleData\dist_bnd.shp haryana | psql -U postgres -d haryana
Я не могу сделать это через php. Пожалуйста, помогите мне решить эту проблему.
<?php
$command = 'C:\Program Files\PostgreSQL\9.6\bin.exe shp2pgsql -I -s 4326 E:\SAITEJA_AND_VISHAL\sampleData\dist_bnd.shp haryana | psql -U postgres -d haryana';
$output = exec($command);
print_r($output);
?>
заранее спасибо
У меня возникла точно такая же проблема (команда работает в cmd, но ничего при вызове через PHP). Что мне очень помогло, так это получение сообщения об ошибке (добавив: 2>&1’& $ Выход). Моя команда выглядела примерно так:
?php
exec("\"C:\Program Files\PostgreSQL\9.6\bin\shp2pgsql.exe\" -s 28992 -I -W
latin1 D:\somefolder\someshape.shp someschema.example_shape | psql -U postgres -h localhost -d somedbname 2>&1", $output);
foreach ($output as $key => $value)
{echo $value;}
?>
Возвращено: «psql не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл». Мое исправление состояло в том, чтобы определить полный путь к исполняемому файлу psql в команде следующим образом:
<?php
exec("\"C:\Program Files\PostgreSQL\9.6\bin\shp2pgsql.exe\" -s 28992 -I -W
latin1 D:\somefolder\someshape.shp someschema.example_shape | \"C:\Program
Files\PostgreSQL\9.6\bin\psql.exe\" -U postgres -h localhost -d somedbname");
Других решений пока нет …