相关疑难解决方法(0)

从脚本中获取当前的PHP可执行文件?

我想从PHP cli中运行PHP cli程序.在一些运行它的机器上,安装了php4和php5.如果我运行外部程序为

php5 outer.php
Run Code Online (Sandbox Code Playgroud)

我希望内部脚本使用相同的php版本运行.在Perl中,我将使用$^Xperl可执行文件.看来PHP中没有这样的变量?

现在,我正在使用$_SERVER['_'],因为bash(和zsh)将环境变量$_设置为最后运行的程序.但是,我宁愿不依赖于特定于shell的习语.

更新:版本差异只是一个问题.例如,如果PHP不在PATH中,或者不是PATH中找到的第一个版本,则查找版本信息的建议将无济于事.

此外,csh变体似乎没有$_为其进程设置环境变量,因此解决方法在那里不适用.

更新2:我正在使用$_SERVER['_'],直到我发现它没有做正确的事情xargs(这是有道理的...... zsh将它设置为它运行的命令,这xargs不是php5,并且xargs不会更改变量).回归使用:

$version = explode('.', phpversion());
$phpcli = "php{$version[0]}";
Run Code Online (Sandbox Code Playgroud)

php

20
推荐指数
3
解决办法
2万
查看次数

如何找到当前运行的PHP可执行文件?

从PHP程序内部我想知道执行它的二进制文件的位置.Perl就是$^X为了这个目的.PHP中是否有相同的东西?

这样它可以使用自己执行子PHP进程(而不是硬编码路径或假设"php"是正确的).

UPDATE

  1. 我使用的是lighttpd + FastCGI,而不是Apache + mod_php.所以是的,有一个PHP二进制文件.
  2. eval/include不是解决方案,因为我正在生成一个必须在请求之外生存的服务器.

我尝试过但不起作用的事情:

  • $_SERVER['_']看起来像我想要的命令行,但它实际上来自上一个执行程序的shell设置的环境变量.从Web服务器运行时,这是Web服务器二进制文件.
  • which php将无法正常工作,因为不保证PHP二进制文件与Web服务器中的二进制文件相同PATH.

提前致谢.

php fastcgi

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

php ×2

fastcgi ×1