Laradock php-fpm apache2 file_get_contents连接被拒绝

时间:2018-04-24 11:45:05

标签: php apache docker laradock

我使用具有以下容器的多项目结构运行laradock 7.0.0:

docker-compose up -d apache2

这将运行php-fpm和apache2

我将hosts文件配置为连接到localhost:

的/ etc /主机

127.0.0.1    myproject.local

我为apache2创建了一个网站配置:

laradock / apache2的/位点/ myproject.conf

<VirtualHost *:80>
  ServerName myproject.local
  DocumentRoot /var/www/myproject/public/
  Options Indexes FollowSymLinks

  <Directory "/var/www/myproject/public/">
    AllowOverride All
    <IfVersion < 2.4>
      Allow from all
    </IfVersion>
    <IfVersion >= 2.4>
      Require all granted
    </IfVersion>
  </Directory>
</VirtualHost>

我修改php.ini设置以允许url include:

laradock / PHP-FPM / laravel.ini

allow_url_include=On

当访问myproject.local时,网站正在显示。 到目前为止没问题。但是当我做一个file_get_contents时,我得到一个拒绝的连接:

$json = file_get_contents('http://myproject.local/test.json');
var_dump($json);
exit;

响应:

Warning: file_get_contents(http://myproject.local/test.json): failed to open stream: Connection refused in /var/www/myproject/public/test.json

似乎php-fpm无法找到apache2。当我得到apache2容器的ip adres:

docker exec -ti laradock_apache2_1 bash
ifconfig

结果:

eth0 Link encap:Ethernet HWaddr 02:42:ac:16:00:04
inet addr:172.22.0.4

我在php-fpm上修改了hosts文件

docker exec -ti laradock_php-fpm_1 bash
nano /etc/hosts

添加规则:

172.22.0.4 myproject.local

比file_get_contents有效。此修复程序的问题是apache2容器的ip并不总是相同。而且我每次都要为每个项目做这件事。

有没有办法修改Dockerfile或docker-compose.yml,一次为每个项目链接php-fpm到apache2?

0 个答案:

没有答案