【发布时间】:2020-10-30 21:38:17
【问题描述】:
我正在构建小型应用程序来收集数据。数据收集使用 PHP,数据存储使用 PostgreSQL。 PostgreSQL 包含在内,所以我可以完全控制它。用于收集的 PHP 是由外部实体触发的,我无法控制将运行代码的 PHP 解释器。
有没有办法加载php_pgsql.dll?在运行时?
我知道已经有人问过了,例如here、here,而我最好的信息来源是here。如果我做对了,那么如果我不是系统的根用户就没有办法(因为dl() 已被删除)。
我可以像添加 PostgreSQL 一样将 PHP 添加到我的应用程序中(以控制 PostgreSQL 并且不需要请人安装、配置、维护......),但是我的 PHP 文件是由外部应用程序触发的所以我无法控制使用的 PHP 解释器/环境。
有没有办法从 PHP 代码开始(我们称之为systemPHP)相同的 PHP 代码但在不同的 PHP 环境中(myPHP 环境我可以控制以及我将在哪里包含 dll)?
例如,如果systemPHP启动collect.php,collect.php的伪代码将是:
if <this is myPHP> { # How to detect it?
<execute the data collection code>
}
else {
<Start collect.php in myPHP transfering all the data to it> # For example if started by apache then also headers, session information etc...
<Send back result from myPHP via the systemPHP>
}
如何实现这个 PHP '隧道'?
感谢任何帮助或提示。我知道最好是 root 或至少有智能管理员,但事实并非如此 :-(
目前我正在尝试通过 shell 执行数据库任务然后在 PHP 中获取响应来解决此问题,但有时它有时不起作用,我相信有更好的方法来做到这一点(更不用说速度和资源使用)。
【问题讨论】:
标签: php postgresql dll runtime dynamic-loading