上下文相关的 phpinfo() 以及指定的路径

问题描述 投票:0回答:1

我在 2019 编写了一个解析器,为我的

OpenSource Hosting-Panel“fruithost”
准备并输出 phpinfo()

在这里,我找到了一种方法来输出

phpinfo()
与先前指定目录的范围,因为托管用户也可以在子目录中创建
php.ini

该方法的特别之处在于,整个过程是直接通过 Web 服务器和

PHP-FPM
执行的,因此专门使用先前指定目录的
phpinfo();

对我来说不幸的是,由于 git stash,我当时丢失了该部分,我恢复文件的努力(这里我已经用尽了所有可能的可能性)是徒劳的。

现在我想重新开始整个话题,再次寻找实现我的意图的可能性。

故事有问题:

我不能只打印

phpinfo()
,因为这里打印的是配置,它在完全不同的上下文中运行。如您所知,没有
phpinfo('/path/to/php.ini')
方法。 🙄

通过

php -i -c /destination/path/
使用 PHP CLI 在这里不起作用,因为整个过程是由 php-cli 在不同的上下文中执行的,而且输出也不会以 HTML 形式发生。特别是,这里加载了其他不代表PHP-FPM配置的PHP模块。

期望的行为:

在屏幕截图上您可以看到需要什么: 在最右上角,可以选择一个域。例如

example.com
sample.net
。这些域位于以下路径:

/var/fruithost/

<username>
/
<domain>
/

如果用户选择右上角的域(例如

sample.net
),
phpinfo()
使用目录
/var/fruithost/<username>/sample.net/
,因为
php.ini
可能位于此处。

该基数随后用于控制

phpinfo()
的输出。

有哪些想法和做法?

对于那些感兴趣的人:我在完成 2019 年部分时上传了一张屏幕截图,这就是结果: Preview

php directory
1个回答
0
投票

我创建了一个小脚本,可以帮助您从 CLI 获取 HTML,您可以在其中指定自定义

php.ini
文件:

用途:

$ ./phpinfo.sh /path/to/your/php.ini

这是脚本(在上面的命令中称为

phpinfo.sh
):

#!/bin/bash

# CONFIGURATION
server_port=8000
temp_php_file=temp-phpinfo.php
result_file=result-phpinfo.html

# EXECUTION
echo "<?php phpinfo();" > $temp_php_file
php -c $1 -S localhost:$server_port &
pid=$!
echo $(curl -L http://localhost:$server_port/temp-phpinfo.php) > $result_file
kill $pid
rm $temp_php_file

主要思想是启动并立即终止 PHP 内置 Web 服务器,以使用自定义

phpinfo()
调用
php.ini
(这是有效的,因为内置服务器是由 CLI 启动的,您可以在其中指定
 -c
论证)。

此脚本将生成一个包含所需输出的 HTML 文件。显然您可以根据需要自定义参数。

完全不同的方法是为您拥有的每个网站(目录/虚拟主机)创建不同的 PHP-FPM 池,然后使用目录中的

.user.ini
文件来指定自定义设置 (https://www.php.net /manual/en/configuration.file.per-user.php)。使用这种方法,您需要从可以访问
.user.ini
文件的目录调用 PHP。这是一种更加结构化的方法,您应该考虑是否适用于您的案例。

© www.soinside.com 2019 - 2024. All rights reserved.