httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Frank <thu...@apache.org>
Subject Re: [users@httpd] unable to execute php-fpm properly
Date Thu, 13 Apr 2017 02:24:03 GMT

On 12/04/17 08:36 PM, John Iliffe wrote:
> See below.
>
> On Wednesday 12 April 2017 20:02:10 Frank wrote:
>> On 12/04/17 05:34 PM, John Iliffe wrote:
>>> I am converting my web pages from mod_php to php-fpm, following the
>>> directions found at:   https://wiki.apache.org/httpd/PHP-FPM   Testing
>>> to date indicates that on this server all scripts work properly under
>>> mod_php.
>>>
>>> Both of the following were tried within a <VirtualHost> container for
>>> the default virtual host.
>>>
>>> If I use the "simple" approach from the Wiki:
>>>  ProxyPass "/*.php/" "fcgi://127.0.0.1:9000" enablereuse=on
>>>
>>> then the page SOURCE is displayed, PHP never executes.  Adding a first
>>> line of      #! /path-to-php-executable   doesn't accomplish
>>> anything.  Neither way leads to any errors showing in the php-fpm
>>> log.
>>>
>>>
>>> Using the "more flexible" approach:
>>>
>>> ProxyPassMatch ^/(.*\.php(/.*)?)$
>>> fcgi://127.0.0.1:9000/httpd/iliffe/$1
>>>
>>>    enablereuse=on
>>>
>>> Gives me a "No Input File Specified" error.  This line was cribbed
>>> from the Wiki example and the path /httpd/iliffe/  is precisely where
>>> the php script lives, based on the server root and not the document
>>> root as noted in the Wiki article.
>>>
>>> There is no php-fpm error message issued in either case and the Apache
>>> error entry for the ProxyPassMatch case is:
>>>
>>> [Wed Apr 12 16:50:28.688837 2017] [proxy_fcgi:error] [pid 13574:tid
>>> 140145512003328] [client 192.168.1.10:45240] AH01071: Got error
>>> 'Unable to open primary script: /httpd/iliffe/testfcgi.php (No such
>>> file or directory)\n'
>>>
>>> I am using mostly the defaults in the php-fpm config and pool config
>>> files. The default path to the php executable has been updated to
>>> point to where it really is.
>>>
>>> Can anybody see what I might have missed?
>>>
>>> Thanks in advance.
>>>
>>> John
>>> =========================================
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
>>> For additional commands, e-mail: users-help@httpd.apache.org
>>
>> 1) ProxyPass doesn't use PCRE (the wiki does not use PCRE with
>> ProxyPass, either). You need to use ProxyPassMatch to parse PCRE.
>
> I'm not sure what you are saying here.  When I used only ProxyPass using
> the default configuration in the Wiki, the correct page was displayed, it
> just didn't execute the PHP script and adding the bang-path didn't change
> anything.  The source code was displayed as the page.
>
> While it is possible that the ProxyPath directive didn't match anything and
> Apache tried to handle the script file as a static page, I have been unable
> to prove that conjecture.  The page IS in Apache's document root for this
> virtual host, so I suppose that is possible.  There is no SetHandler
> directive to handle the .php extension, and my understanding of the
> documentation is that one should not be required since Apache is not
> actually running the script.
>>
>> 2) /httpd/iliffe/testfcgi.php would need to exist on your filesystem or
>> php-fpm chroot. The requested URI is literally appended to the path in
>> the ProxyPassMatch directive.
>
> Yes, that's what I had expected to happen.  php-fpm does not chroot; the
> true path /httpd/iliffe/testfcgi.php exists in the file system and is visible
> to php-fpm, based on the simpler configuration.  That's what's so weird, the
> same path gets completely different results, depending on the way the script
> is called.   In this case the $1 amounts to a null since there is no passed
> data in the URL.
>
> Before you ask, I expect SELinux problems with these files because of the
> tagging, but at the moment SELinux is in permissive mode.
>
> John
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
>> For additional commands, e-mail: users-help@httpd.apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
> For additional commands, e-mail: users-help@httpd.apache.org
>

ProxyPass *cannot* understand PCRE. ProxyPassMatch *can*. Hence, do 
*not* use PCRE with ProxyPass. That is all.

Step 1) Make sure that mod_proxy_fcgi is loaded. See apachectl -M

As for the "Primary Script Unknown" error, it always means that you 
mapped the request to a non-existent resource on the file system / 
chroot. Verify again.

The various methods listed on the wiki allow httpd to pass the request 
to a fcgi backend, which will process the php file, and return the 
output. You can use the SetHandler approach instead of ProxyPassMatch - 
it's up to you.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Mime
View raw message