下面的命令通过cmd成功将shapefile上传到postgresql。
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);
?>
提前致谢
答案 0 :(得分:0)
我遇到了完全相同的问题(命令在cmd中有效但在通过PHP调用时没有任何内容)。帮助我很多的是检索错误消息(通过添加:2&gt;&amp; 1'和&amp; $输出)。我的命令看起来像:
?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");