我试图用exec()运行PHP中的几个命令,它似乎只适用于我的windows环境变量中定义的一些命令,但不适用于所有命令。
在命令提示符中,我可以从任何路径(C:\或E:\无论)
> pear -V // ... "PEAR Version: 1.9.5" ...
> dot -V // dot - graphviz version 2.38.0 (20140413.2041)
> phpdoc -V // phpDocumentor version 2.8.1
它们都为每个指定的程序返回正确的版本,这意味着环境变量配置良好。
但是在PHP中我只能运行一些命令,其余的都失败了:
$out = array();
$ret = '';
exec('pear -V', $out, $ret);
echo var_dump($out); // $ret = 0, $out = array ..."PEAR Version: 1.9.5" ...
exec('phpdoc -V', $out, $ret);
echo var_dump($out); // $ret = 1, $out = array ..."Could not open input file: \phpdoc" ...
exec('dot -V', $out, $ret);
echo var_dump($out); // $ret = 1, $out = empty array
那么,我是不是遗漏了什么?。
编辑:exec()工作正常,它适用于我的一些环境变量,如pear,cmd等,它不适用于上面指定的
phpdoc
点(图形)
即使它们在我的命令提示符上工作,并且在我的窗口环境中配置良好。
EDIT2:
@Stefan Cvetkovic I gues这是您希望在运行此命令时从结果中看到的部分
shell_exec(set):
Path=C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1。0\;C:\ProgramFiles\TortoiseHg\;C:\ProgramFiles(x86)\UniversalExtractor;C:\ProgramFiles(x86)\Universal Extractor\bin;C:\xampp\php;路径文本=。通用域名格式;。EXE;。球棒CMD;。VBS;。VBE;。JS;。JSE;。WSF;。WSH;。移动交换中心
有没有可能php无法访问我的“点”路径,因为结果中缺少这一点:
...C:\xampp\php;C:\xampp\php\pear\phpDocumentor\vendor\graphviz\bin
点exe位于C:\xampp\php\pear\phpDocumentor\vendor\graphviz\bin中,配置良好,可以运行
我会尝试在有问题的数组或变量上使用gettype
。
除此之外,我还将运行phpinfo()
,查看您的服务器中是否启用了该项(或者我确定您已选中的php.ini?)。
在exec exec()和shell exechttp://php.net/manual/en/function.shell-exec.php上看到了一些有趣的注释,其中项需要管理员权限才能运行。也许它适用?
虽然晚了两年,但我发现自己也处于同样的境地,并找到了解决办法:
<?php
putenv('PATH=' . $_SERVER['PATH']);
$currentBranch = exec('git rev-parse --abbrev-ref HEAD');
由于未知原因,exec
调用中缺少环境变量,
但是它确实存在于$\u服务器['PATH']
中,代码只是将它放回原处,它就可以工作了
我也有同样的问题。如果有人遇到同样的问题,请确保重新启动Web服务器(在我的设置中为apache),因为PATH变量是最近设置的,因此在设置变量之前启动的进程(httpd)不可用。
本文向大家介绍Windows Powershell 环境变量,包括了Windows Powershell 环境变量的使用技巧和注意事项,需要的朋友参考一下 传统的控制台一般没有象Powershell这么高级的变量系统。它们都是依赖于机器本身的环境变量,进行操作 。环境变量对于powershell显得很重要,因为它涵盖了许多操作系统的细节信息。此外,powershell中的变量只存在于powersh
我在Windows10机器上运行Docker1.12.0。我正在开发一个Java程序,使用Maven 3.3.9作为依赖项管理器。我有一个maven docker插件(https://github.com/fabric8io/docker-maven-plugin),它在干净安装时会出现以下错误。 [ERROR]未能执行目标IO.fabric8:docker-maven-plugin:0.15.1
变量是计算机系统用于保存可变值的数据类型,我们可以直接通过变量名称来提取到对应的变量值。在 Linux 系统中,环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录(HOME)、邮件存放位置(MAIL)等。 值得一提的是,Linux 系统中环境变量的名称一般都是大写的,这是一种约定俗成的规范。 我们可以使用 env 命令来查看到 Linux 系统中所有的环境变量,执行命令如下: [r
Weex 环境变量 Weex 提供 WXEnvironment 用来获取 Weex 运行的环境变量,浏览 Weex 环境变量。 提供字段如下 platform (String) Current running platform, could be "Android", "iOS" or "Web". weexVersion (String) The version of Weex SDK. app
我试图运行一个读取环境变量的应用程序,该环境变量包含大约22K个字符的JSON。项目设置告诉我使用来正确配置它,但是当我使用windows时,这些命令不起作用。 我尝试使用GUI环境变量将文件的内容复制到变量中,但是它的输入会将值截断到一定的限制,这个限制甚至不到文件的一半。在此之后,我尝试使用Powershell和以下命令设置变量: 然后用以下命令保存结果:
环境变量 Vite 在一个特殊的 import.meta.env 对象上暴露环境变量。这里有一些普遍适用的内建变量: import.meta.env.MODE: string 应用运行基于的 模式。 import.meta.env.BASE_URL: string 应用正被部署在的 base URL。它由 base 配置项 决定。 import.meta.env.PROD: boolean 应用是