0

我遇到了自己的 PHP 请求问题。在示例中,我将使用file_get_contents()但同样会发生exec('wkhtmltopdf [*SELF*]')orcurl()

  • 让我们命名我的服务器 example.com
  • 已安装 apache2
  • FastCGI(多个 PHP 版本 5.3、5.4、5.5、5.6、7.0)
  • 现在我有 2 个虚拟脚本


第一个脚本

//get-html.php  
file_get_contents('http://example.org/index.html')

第二个脚本

//get-php.php
file_get_contents('http://example.org/index.php')


测试
1) 命令行:php get-html.php// 成功
2) 浏览器:example.org/get-html.php// 成功

1) 命令行:php get-php.php// 成功
2) 浏览器:example.org/get-php.php//超时


我接下来尝试了什么

  • 创建子域,例如为和 forsubdomain.example.org/index.php拥有不同的 PHP 版本get-php.phpindex.php
  • 修改 /etc/hosts
  • 在其他网站(如 google.com)上请求 // 成功
  • file_get_contents() 之前的 session_write_close() 和之后的 session_start() 也不起作用

所以我的嫌疑人是 mod_fastcgi。似乎 apache 无法运行 2 个实例来处理来自自身的 PHP 请求。从命令行运行脚本按预期工作。

有人有什么建议吗?

4

1 回答 1

1

我没有设置 PHP_FCGI_CHILDREN 默认值 1。
当我在 PHP 脚本中通过 apache 从我的服务器调用另一个 PHP 脚本时,它失败了,因为它无法创建另一个 PHP FCGI 实例。

PHP_FCGI_CHILDREN 的正确设置

于 2018-01-11T08:39:07.313 回答