Docker PHP-Apache intermitent errors - php

I'm learning about auto-loading by following a simple PHP tutorial. The code of the classes and the custom autoloader do not seem to be the issue.
But, when it makes no sense at all, I get . . . failed to open stream: No such file or directory in . . . errors.
Then I happened to notice when I refresh my browser a few times the expected correct output does display.
So, it's not working one moment and then it is, after a few refreshes. I'm guessing it has something to do with the server. But how can I diagnose this issue ?
I am using the following docker-compose file:
version: "3"
services:
www:
image: "php:7.4.24-apache"
restart: 'always'
ports:
- '81:80'
volumes:
- ".:/var/www/html"
UPDATE : Docker log output
docker logs --follow complete-object-orient-php-developer-course_www_1 | grep Autoloading
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.21.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.21.0.2. Set the 'ServerName' directive globally to suppress this message
[Tue Oct 05 02:33:20.966439 2021] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.48 (Debian) PHP/7.4.24 configured -- resuming normal operations
[Tue Oct 05 02:33:20.966629 2021] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
[Tue Oct 05 02:33:25.797390 2021] [mpm_prefork:notice] [pid 1] AH00170: caught SIGWINCH, shutting down gracefully
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.21.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.21.0.2. Set the 'ServerName' directive globally to suppress this message
[Tue Oct 05 02:33:32.385570 2021] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.48 (Debian) PHP/7.4.24 configured -- resuming normal operations
[Tue Oct 05 02:33:32.385663 2021] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
[Wed Oct 06 01:34:55.303031 2021] [php7:error] [pid 20] [client 172.21.0.1:63858] script '/var/www/html/chapter3/namespaces.php' not found or unable to stat
[Wed Oct 06 01:35:05.608696 2021] [php7:error] [pid 31] [client 172.21.0.1:63856] script '/var/www/html/chapter4/namespaces.php' not found or unable to stat
[Wed Oct 06 01:35:15.729637 2021] [php7:error] [pid 19] [client 172.21.0.1:63862] script '/var/www/html/chapter4/namespaces.php' not found or unable to stat
[Wed Oct 06 03:06:49.384397 2021] [php7:error] [pid 18] [client 172.21.0.1:64066] script '/var/www/html/chapter4/autoloader.php' not found or unable to stat

Related

Cannot get Fedora 35 to log errors

I recently got myself a Fedora VM to do coding with and I cannot get Apache to log errors
My httpd.conf is still pretty default and so is my PHP.
sudo tail -f /var/log/httpd/error_log output:
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::ef21:ea50:d362:afe9%ens33. Set the 'ServerName' directive globally to suppress this message
[Tue Aug 30 18:06:08.311018 2022] [lbmethod_heartbeat:notice] [pid 5172:tid 5172] AH02282: No slotmem from mod_heartmonitor
[Tue Aug 30 18:06:08.316093 2022] [mpm_event:notice] [pid 5172:tid 5172] AH00489: Apache/2.4.54 (Fedora Linux) configured -- resuming normal operations
[Tue Aug 30 18:06:08.316107 2022] [core:notice] [pid 5172:tid 5172] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
[Tue Aug 30 18:14:21.328254 2022] [mpm_event:notice] [pid 5172:tid 5172] AH00492: caught SIGWINCH, shutting down gracefully
[Tue Aug 30 18:14:22.415182 2022] [suexec:notice] [pid 5669:tid 5669] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::ef21:ea50:d362:afe9%ens33. Set the 'ServerName' directive globally to suppress this message
[Tue Aug 30 18:14:22.422270 2022] [lbmethod_heartbeat:notice] [pid 5669:tid 5669] AH02282: No slotmem from mod_heartmonitor
[Tue Aug 30 18:14:22.425068 2022] [mpm_event:notice] [pid 5669:tid 5669] AH00489: Apache/2.4.54 (Fedora Linux) configured -- resuming normal operations
[Tue Aug 30 18:14:22.425082 2022] [core:notice] [pid 5669:tid 5669] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
I already set Apache LogLevel to info and in php.ini I set it to log errors and not output them and also enabled HTML errors
Please let me know if you need anything else.

php files aren't loaded, due to unknown apache errors

I am using apache to run php files in firefox dev edition but some of them won't work.
I guess its because of the following errors that are being shown in console for
apache2: [Mon Dec 18 08:57:59.610192 2017] [mpm_prefork:notice] [pid 121] AH00163: Apache/2.4.28 (Unix) PHP/7.1.7 configured --
resuming normal operations
[Mon Dec 18 08:57:59.610276 2017] [core:notice] [pid 121] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND' .
If I click "submit" in my self-made register form, it is supposed to open the next file, which fails:

Can't access php-fpm container from apache

I have installed the latest Nextcloud container on my Ubuntu machine.
It started successfully with the following command:
sudo docker run --name nextcloud --link mysql:mysql -p 9000:9000 -v /data/nextcloud:/var/www/html -d nextcloud:latest
The comand sudo docker logs nextcloud shows:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
[Mon Mar 13 09:41:24.786941 2017] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) PHP/5.6.30 configured -- resuming normal operations
[Mon Mar 13 09:41:24.787013 2017] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
I enabled mod_proxy and mod_proxy_fcgi on the Apache configuration of the host machine, so this is not running inside another docker container.
ProxyPreserveHost On
ProxyPass "/cld" "fcgi://127.0.0.1:9000"
ProxyPassReverse "/cld" "fcgi://127.0.0.1:9000"
When opening the URL I get en error 503 Service Unavailable.
The Apache error log is showing:
[Mon Mar 13 11:08:35.102072 2017] [proxy_fcgi:error] [pid 11783:tid 140492205455104] [client 2001:a61:186:d601:f898:e50c:c181:db75:52659] AH01067: Failed to read FastCGI header
[Mon Mar 13 11:08:35.102119 2017] [proxy_fcgi:error] [pid 11783:tid 140492205455104] (104)Connection reset by peer: [client 2001:a61:186:d601:f898:e50c:c181:db75:52659] AH01075: Error dispatching request to :
[Mon Mar 13 11:08:36.866618 2017] [proxy_fcgi:error] [pid 11783:tid 140492197062400] (104)Connection reset by peer: [client 2001:a61:186:d601:f898:e50c:c181:db75:52660] AH01075: Error dispatching request to : (sending empty stdin)
[Mon Mar 13 11:08:38.263875 2017] [proxy_fcgi:error] [pid 11783:tid 140492180276992] [client 2001:a61:186:d601:f898:e50c:c181:db75:52664] AH01067: Failed to read FastCGI header
[Mon Mar 13 11:08:38.263914 2017] [proxy_fcgi:error] [pid 11783:tid 140492180276992] (104)Connection reset by peer: [client 2001:a61:186:d601:f898:e50c:c181:db75:52664] AH01075: Error dispatching request to :
What have I missed?
I think that using nextcloud:latest, you are getting the image using Apache, not the one using fpm.
Try to use nextcloud:fpm with your proxy setup, or using the default image without proxy (ie accessing it directly).

httpd on AWS suddenly stopped working after I set an A record

So today, I was trying to do two things: get rid of extensions like .php in my domains, and use an A record to point a subdomain I have to the IP of the server on which the site I am developing is running on.
I did both at the same time, then restarted httpd, but when it came back up - I couldn't access the website at all. httpd claims it is running fine. I decided to remove the rewrite rules to see if I had somehow introduced a bug into httpd.conf, but after another restart, it still didn't serve webpages. I tried restarting the server instance - no luck again.
I hadn't changed anything else and the server was serving webpages fine before this. I am trying to access the page using just the IP address, so I don't think the A record could have made a difference either.
The output in httpd's error log is the following:
[Wed Aug 10 16:39:44.263098 2016] [suexec:notice] [pid 1843] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
[Wed Aug 10 16:39:44.308130 2016] [auth_digest:notice] [pid 1843] AH01757: generating secret for digest authentication ...
[Wed Aug 10 16:39:44.308701 2016] [lbmethod_heartbeat:notice] [pid 1843] AH02282: No slotmem from mod_heartmonitor
[Wed Aug 10 16:39:44.662464 2016] [mpm_prefork:notice] [pid 1843] AH00163: Apache/2.4.18 (Amazon) configured -- resuming normal operations
[Wed Aug 10 16:39:44.662486 2016] [core:notice] [pid 1843] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
[Wed Aug 10 16:40:02.960708 2016] [mpm_prefork:notice] [pid 1843] AH00171: Graceful restart requested, doing restart
[Wed Aug 10 16:40:03.042697 2016] [auth_digest:notice] [pid 1843] AH01757: generating secret for digest authentication ...
[Wed Aug 10 16:40:03.043290 2016] [lbmethod_heartbeat:notice] [pid 1843] AH02282: No slotmem from mod_heartmonitor
[Wed Aug 10 16:40:03.105719 2016] [mpm_prefork:notice] [pid 1843] AH00163: Apache/2.4.18 (Amazon) configured -- resuming normal operations
[Wed Aug 10 16:40:03.105729 2016] [core:notice] [pid 1843] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
[Wed Aug 10 16:40:03.105750 2016] [mpm_prefork:warn] [pid 1843] AH00167: long lost child came home! (pid 1968)
Any help?
Edit: I used dig on the domain that I pointed with the A-record, and it resolves to the IP (which currently times out but is otherwise the right IP). So it seemingly isn't an issue there, either. I can connect to the server with SSH fine.

Getting Blank screen and nothing in logs. Is this Php syntax and Apache issue?

I am getting the blank screen. No errors in the Apache logs, nothing.
I was thinking there may be a php syntax error and it quietly dies, but I have configured php.ini to display errors:
display_errors=On
html_errors=On
error_reporting=E_ALL | E_STRICT
display_startup_errors=On
here are relevant php configurations loaded:
display_errors On On
display_startup_errors On
enable_dl Off Off
enable_post_data_reading On On
error_append_string no value no value
error_log no value no value
error_prepend_string no value no value
error_reporting 22527
Why is there no Apache error logs? How to trace Apache execution? any help is much appreciated. Thank you
Update:
I was wrong, Apache writes log only once on restart at the time of restart at the location specified by ErrorLog in the Apache Configuration, but nothing is written afterwards even when I get the blank site. Here logs from ErrorLog:
[Tue Nov 18 17:08:20.372970 2014] [mpm_prefork:notice] [pid 1601] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.4 configured -- resuming normal operations
[Tue Nov 18 17:08:20.376988 2014] [mpm_prefork:info] [pid 1601] AH00164: Server built: Jul 22 2014 14:36:39
[Tue Nov 18 17:08:20.377699 2014] [core:notice] [pid 1601] AH00094: Command line: '/usr/sbin/apache2'
[Tue Nov 18 17:19:32.301203 2014] [mpm_prefork:notice] [pid 1643] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.4 configured -- resuming normal operations
[Tue Nov 18 17:19:32.313839 2014] [mpm_prefork:info] [pid 1643] AH00164: Server built: Jul 22 2014 14:36:39
[Tue Nov 18 17:19:32.314481 2014] [core:notice] [pid 1643] AH00094: Command line: '/usr/sbin/apache2'
[Tue Nov 18 17:50:22.848631 2014] [core:info] [pid 1643] AH00096: removed PID file /var/run/apache2/apache2.pid (pid=1643)
[Tue Nov 18 17:50:22.848631 2014] [mpm_prefork:notice] [pid 1643] AH00169: caught SIGTERM, shutting down
[Tue Nov 18 17:50:25.288368 2014] [mpm_prefork:notice] [pid 3313] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.4 configured -- resuming normal operations
[Tue Nov 18 17:50:25.290696 2014] [mpm_prefork:info] [pid 3313] AH00164: Server built: Jul 22 2014 14:36:39
[Tue Nov 18 17:50:25.291613 2014] [core:notice] [pid 3313] AH00094: Command line: '/usr/sbin/apache2'
How to make Apache log for PHP errors or anything for that matter to be able troubleshoot issues?
It turns out this was neither Apache nor PHP error, but an application level issue where there is ErrorHandler function declared that does hide all the php errors as described here:
PHP's white screen of death
I came to conclusion to the fact that it is neither Apache nor PHP configurations by changing ErrorLevel to trace8 in virtual host settings:
LogLevel trace8
ErrorLog ${APACHE_LOG_DIR}/dev-virtual/error.log
Afterwards, I tail the logs specified in ErrorLog from command line and make requests. The logs showed:
[Tue Nov 18 18:16:37.398720 2014] [http:trace3] [pid 4054] http_filters.c(977): [client 10.88.12.0:49378] Response sent with status 200, headers:
...
[Tue Nov 18 18:16:37.399243 2014] [http:trace4] [pid 4054] http_filters.c(806): [client 10.88.12.0:49378] Content-Length: 0
...
Here, the logs shows 200 response with Content-Length:0. The 200 is good response from Apache, so its not Apache error responsible for the blank page. Seeing the Content-Lenght set to 0, made me think there is something more than PHP setup/configuration issue. It was the ErrorHandler at the Application level.

Categories