Назад | Перейти на главную страницу

PHP FastCGI - Как работает PHPRC

У меня странная ситуация в моей конфигурации Apache. Я решил использовать FastCGI и несколько версий PHP. Ниже мои файлы конфигурации.

Если я проверю phpinfo(); Я вижу это в домене localhost это загружается php.ini из папки php56. Хорошо. Что я не понимаю, почему на домене localhost7 это загружается php.ini из папки php71. Я не меняю PHPRC где-то для PHP7, но он загружает другой файл конфигурации. Как это работает или почему php.ini загружается из другой папки?

Если я изменил PHPRC на совершенно другую папку, он тоже будет работать. Эта константа не используется, или это потому, что я использую Windows (другое поведение)?

<IfModule fcgid_module>
    FcgidInitialEnv PATH "C:/www/xampp/php5.6;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;"
    FcgidInitialEnv SystemRoot "C:/Windows"
    FcgidInitialEnv SystemDrive "C:"
    FcgidInitialEnv TEMP "C:/www/xampp/tmp"
    FcgidInitialEnv TMP "C:/www/xampp/tmp"
    FcgidInitialEnv windir "C:/WINDOWS"
    FcgidIOTimeout 64
    FcgidConnectTimeout 16
    FcgidMaxRequestsPerProcess 1000 
    FcgidMaxProcesses 3
    FcgidMaxRequestLen 8131072
    # Location php.ini:
    FcgidInitialEnv PHPRC "C:/www/xampp/php5.6/"
    FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000

    <Files ~ "\.php$">
        Options Indexes FollowSymLinks ExecCGI 
        AddHandler fcgid-script .php
        FcgidWrapper "C:/web/xampp/php5.6/php-cgi.exe" .php
    </Files>
</IfModule>

Файл конфигурации виртуальных хостов:

<VirtualHost *:80>
    DocumentRoot "C:/web/xampp/htdocs/"
    ServerName localhost7

    <Directory "C:/web/xampp/htdocs/"> 
        <Files ~ "\.php$"> 
            Options +ExecCGI
            FcgidWrapper "c:/web/xampp/php7.1/php-cgi.exe" .php 
        </Files> 
    </Directory> 
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot "C:/web/xampp/htdocs/"
    ServerName localhost

    <Directory "C:/web/xampp/htdocs/"> 
        <Files ~ "\.php$"> 
            Options +ExecCGI
            FcgidWrapper "c:/web/xampp/php5.6/php-cgi.exe" .php 
        </Files> 
    </Directory> 
</VirtualHost>

Мне так стыдно :(

Пожалуйста, проверьте свои пути дважды (или больше), проблема всегда есть. Если вы проверите, у меня был путь к php-cgi.exe C:\web\... но для PHPRC это C:\www\.... И это единственная причина.

И был загружен правильный php.ini, потому что это поведение по умолчанию. Вот порядок мест, где PHP ищет файл php.ini: http://php.net/manual/en/configuration.file.php