Multi sites, php not resolve

1. My Caddy version (caddy -version):


2. How I run Caddy:

Please provide all of the relevant information and DO NOT REDACT anything except passwords/keys. Thank you!

a. System environment:

OS, relevant versions, systemd? docker? etc.

Oracle Linux 7.7, systemd , no docker

b. Command:

paste command here

c. Service/unit/compose file:

paste full file contents here

d. My complete Caddyfile:

http:// {
    root /var/www/html/
    fastcgi / /run/php-fpm/www.sock php {
         ext .php
         split .php
         index index.php
} {
    root /var/www/
    errors /var/log/caddy/errox.log
    fastcgi / /run/php-fpm/www.sock php {
         ext .php
         split .php
         index index.php

3. The problem I’m having:

Please describe the issue thoroughly enough so that anyone can reproduce the exact behavior you’re seeing. Be as specific as possible.

my Caddyfile shown above, but php only work at the default site, the site not work. The log files reads.

How to make php work for the site Further more ,is there any way to make settings like php and gzip to be public for all sites?

4. Error messages and/or full log output:

Please DO NOT REDACT any information except passwords/keys.

[ERROR 0 /index.php] PHP message: PHP Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0Unable to open primary script: /var/www/ (Permission denied)

5. What I already tried:

the user, and the listener of php-fpm service has been set to www-data, the same as the Caddy service.
The owner of the directory /var/www/html and /var/www/ have been set to www-data.

I use to chmod the php files in the dir to 0777. But the permission still denied.

6. Links to relevant resources:

Hi @sharoue, welcome to the Caddy community.

What’s your unit file?

Out of curiosity, have you tried this with any other webservers?

sorry, i cannot quite follow the meaning of “unit file”… @Whitestrake

i havent tried other webservers at this vps before, since to me oracle linux is a little bit… awesome. For apache the php support is configured auto at the debian-like linux and always ok, so i think there is something wrong with my own settings.

The unit file is what systemd uses to configure the process running as a service.

You should be able to use systemctl cat [service], where [service] is the name of the Caddy service on your system, to display the unit file.

Do you also run php-fpm via systemd? Might help to list that unit file as well.

at the default site /var/www/html/, php resolving works

unit file like this
cat /etc/systemd/system/caddy.service | grep -v ;

Description=Caddy HTTP/2 web server
Documentation= systemd-networkd-wait-online.service





ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
ExecReload=/bin/kill -USR1 $MAINPID





and the unit file of php-fpm like this

# /usr/lib/systemd/system/php-fpm.service
# It's not recommended to modify this file in-place, because it
# will be overwritten during upgrades.  If you want to customize,
# the best way is to use the "systemctl edit" command.

Description=The PHP FastCGI Process Manager

ExecStart=/usr/sbin/php-fpm --nodaemonize
ExecReload=/bin/kill -USR2 $MAINPID


But not in /var/www/

Can you list the output of: ls -al /var/www

like this @Whitestrake

$ ls -al /var/www
total 8
drwxr-xr-x.  5 root     root   52 Oct 16 12:05 .
drwxr-xr-x. 21 root     root 4096 Oct 15 07:03 ..
drwxr-xr-x.  2 root     root    6 Aug 25 19:42 cgi-bin
drwxr-xr-x.  2 www-data root   37 Oct 15 07:57 html
drwxrwxr-x.  6 www-data opc  4096 Oct 18 12:46

i doubt that the issue happens with ‘/’,
no matter i set the php for the default site or not,
the php of site just don’t work.

i used to make setting like

fastcgi /run/php-fpm/www.sock php {

however it did not work either.

As far as I know,

[ERROR 0 /index.php] PHP message: PHP Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0Unable to open primary script: /var/www/ (Permission denied)

The fact that we have an error here from PHP means that Caddy is properly configured and is passing requests off to PHP-FPM and getting responses back. So there’s nothing here to fix in the Caddyfile, it’s already working.

The issue is that PHP doesn’t seem to be configured with the right permissions to access the files. Something is denying permissions. I don’t see systemd doing anything along those lines, so possibly it’s an issue with the PHP-FPM configuration, but I’m not sure.

I don’t know why…I chmod -R the to 0777 and it is still not OK.
Finally I deleted the directory and rmdir again… it works。。。

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.