首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何获得不需要shell访问的php解释器/二进制文件的完整路径

如何获得不需要shell访问的php解释器/二进制文件的完整路径
EN

Stack Overflow用户
提问于 2012-07-18 20:54:52
回答 4查看 27.3K关注 0票数 14

如何从php脚本获得php解释器的完整路径(没有命令行访问)。

我需要做的是:

代码语言:javascript
代码运行次数:0
运行
复制
$foo = "/usr/bin/php";
echo $foo;

但我需要先得到路径,这样我才能把它分配给foo。

如果您有一个在Windows和nix上都能工作的解决方案,但是如果没有的话,nix就可以了。

在你问之前,

  1. 问主人是不可能的
  2. 没有shell访问

问题是,使用它输出的任何东西都不起作用。例如,PHP_BINDIR将输出/usr/bin,但是使用/usr/bin/php不会有帮助。完整的代码是:

代码语言:javascript
代码运行次数:0
运行
复制
exec("php-cli $path_to_file > /dev/null 2>/dev/null &"); 

但是即使使用/usr/bin/php-cli也不起作用,尽管它告诉了我这一点。我必须使用:

代码语言:javascript
代码运行次数:0
运行
复制
exec("/opt/php52/bin/php-cli $path_to_file > /dev/null 2>/dev/null &");

例如,对于这个特定的主机。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-18 20:58:40

您可以使用以下常量找到PHP二进制路径:

代码语言:javascript
代码运行次数:0
运行
复制
PHP_BINDIR

从PHP5.4开始,您可以获得当前实际使用以下常量运行的可执行文件的路径:

代码语言:javascript
代码运行次数:0
运行
复制
PHP_BINARY

http://php.net/manual/en/reserved.constants.php

票数 30
EN

Stack Overflow用户

发布于 2015-11-13 04:32:14

Linux用户可以尝试使用whereis命令。

我在PHP中遇到了这种情况。

代码语言:javascript
代码运行次数:0
运行
复制
whereis php
票数 7
EN

Stack Overflow用户

发布于 2014-10-08 07:46:25

在Windows上,我建议使用以下代码片段:

代码语言:javascript
代码运行次数:0
运行
复制
<?php
$pid = getmypid();
$output = shell_exec(sprintf('tasklist /nh /fo csv /fi "PID eq %d"', $pid));
$processInfo = explode(',', $output);
echo PHP_BINDIR . DIRECTORY_SEPARATOR . trim($processInfo[0], '"');

在unix上,shell命令可能会使用ps

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11550193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档