如何检查命令在PHP中是否“可运行”?

问题描述

file_exists()检查文件是否存在。

但是,在我的系统上,“ pg_ctl”是有效的命令,因为C:\PostgreSQL\bin在我的PATH中,因此运行“ pg_ctl”实际上会运行C:\PostgreSQL\bin\pg_ctl.exe

file_exists将报告“ pg_ctl”不存在,但它仍然“ kinda”存在,因为它可以运行。

如何检查给定的路径或字符串(例如“ pg_ctl”)是否转换为有效命令?

我已经尝试过realpath。它返回realpath('pg_ctl')的布尔值false,因此不起作用。

解决方法

在Windows上,您可以使用where.exe,如果路径中存在该文件,它将返回该文件的路径。

shell_exec('where pg_ctl');

应返回:

C:\ PostgreSQL \ bin \ pg_ctl.exe

因此请在输出中检查它:

$cmd = 'pg_ctl';
var_dump( strpos(shell_exec("where $cmd"),$cmd) !== false );

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...