Localhost cannot be accessed from browser - php

I have worked on localhost all these while till I ran some updates on Windows 7 and restarted. Now I can no longer access to localhost from browser. But Aapache service is running. Showing on system tray. May I know what is the problem?
Error log:
[Thu Dec 16 00:33:35 2010] [notice] Parent: Received restart signal -- Restarting the server.
[Thu Dec 16 00:33:35 2010] [notice] Child 4248: Exit event signaled. Child process is ending.
[Thu Dec 16 00:33:36 2010] [notice] Child 4248: Released the start mutex
[Thu Dec 16 00:33:37 2010] [notice] Child 4248: All worker threads have exited.
[Thu Dec 16 00:33:37 2010] [notice] Child 4248: Child process is exiting
[Thu Dec 16 00:33:40 2010] [notice] Apache/2.2.17 (Win32) PHP/5.2.14 configured -- resuming normal operations
[Thu Dec 16 00:33:40 2010] [notice] Server built: Oct 18 2010 01:58:12
[Thu Dec 16 00:33:40 2010] [notice] Parent: Created child process 4672
[Thu Dec 16 00:33:40 2010] [notice] Child 4672: Child process is running
[Thu Dec 16 00:33:40 2010] [notice] Child 4672: Acquired the start mutex.
[Thu Dec 16 00:33:40 2010] [notice] Child 4672: Starting 64 worker threads.
[Thu Dec 16 00:33:40 2010] [notice] Child 4672: Starting thread to listen on port 80.
I found that Local Address 0.0.0.0:80 is bound to PID 1476 which is httpd.exe

check if your hosts file under C:\Windows\System32\drivers\etc\hosts has been changed by some other program just a guess ...

Maybe it is an error of the DNS service. Have you tried to access the system using the PCs IP-Address or the IP 127.0.0.1 (like http://127.0.0.1)?

Try forwarding port 80.
Also, restart the Apache server once.
En last but not least, a seengee suggested, if you'r running Skype, close it and try again.

I've seen Skype cause this issue in the past as i think it falls back to port 80 by default if its main port is blocked. If you use Skype, try turning it off and check again

Check the logs. Check the httpd instance and see if it appears to be functioning smoothly.
I had a similar problem a month back where the electrician killed the power to my computer and I wound up with a corrupt Apache and MySQL install. I had to re-install and copy the .conf files over to resolve the issue.
Edit
Considering this is an update, check your firewall to assure the update did not restore it to it's defaults (stranger things have happened).

before you restarted, did you install anything? What other services are running? Check if port 80 is already taken ...

Run notepad.exe as administrator. Open c:\windows\system32\drivers\etc\hosts file.
put this line :
127.0.0.1 localhost
save the file. you should have localhost.
Other thing is misconfig in your httpd.conf.
open your httpd.conf (usualy in c:\program files\apache software foundation\apache2.2\conf).
check this line:
ServerName xxxxx:80
where xxxx should be localhost or 127.0.0.1
change it if necessary, and save. Restart apache services.

Related

Corrupted Symfony 2 vendors install

Facts: using standard Symfony 2.0.10 release (includes vendors) all works fine. However with "without-vendors" release something get corrupted after issuing:
php bin/vendors install
Files are fetched but, at the end, accessing any page under web/ ends with Aborted connection. I'm manually installing vendors becuase of doctrine fixtures.
I don't know if the cause is Git for Windows and i'm going to investingate this. Any help would be appreciated.
EDIT: same happens with new version of Symfony (2.0.11). No errors after installing vendors but got Aborted connection requesting any Symfony2 page.
EDIT: this is the error.log file found in Apache2 logs directory after cleaning up and requesting http://localhost/Symfony/web/app_dev.php/_configurator/:
[Sun Feb 26 03:04:22 2012] [notice] Apache/2.2.22 (Win32) PHP/5.3.10 configured -- resuming normal operations
[Sun Feb 26 03:04:22 2012] [notice] Server built: Feb 22 2012 19:25:43
[Sun Feb 26 03:04:22 2012] [notice] Parent: Created child process 2588
[Sun Feb 26 03:04:22 2012] [notice] Child 2588: Child process is running
[Sun Feb 26 03:04:22 2012] [notice] Child 2588: Acquired the start mutex.
[Sun Feb 26 03:04:22 2012] [notice] Child 2588: Starting 64 worker threads.
[Sun Feb 26 03:04:22 2012] [notice] Child 2588: Starting thread to listen on port 80.
[Sun Feb 26 03:04:22 2012] [notice] Child 2588: Starting thread to listen on port 80.
[Sun Feb 26 03:04:33 2012] [notice] Parent: child process exited with status 255 -- Restarting.
open your deps file; and change the address of the git repositories: http for https; this solve your problem.
After
An outdated Git version can't handle http:// and http:// git repository URIs properly, at least in my experience with Debian stable.
If you see 403 errors consider updating Git to 1.7.x or replacing any occurences of http:// and https:// with git:// in your deps file.
Answer to myself: the problem seems to be the checkout style: i'm under Windows and i've used "Checkout Windows style, commit Unix style". This causes (for some reason i can't understand) Apache crash with 255 status.
Setting Git for using "Checkout Unix style, commit Unix style" fixed the problem. Thanks for helping.
Check your web server error.log. If connection aborts, its probably a runtime issue and is not directly related to having vendors installed manually. It could be an an issue with your cache directory.
You can add doctrine-fixtures manually.
See the new target for the DoctrineFixtureBundle below:
[doctrine-fixtures]
git=https://github.com/doctrine/data-fixtures.git
[DoctrineFixturesBundle]
git=https://github.com/doctrine/DoctrineFixturesBundle
target=/bundles/Doctrine/Bundle/DoctrineFixturesBundle
old target=/bundles/symfony/Bundle/DoctrineFixturesBundle
new target=/bundles/Doctrine/Bundle/DoctrineFixturesBundle
To load the fixtures correctly, you have to add the type of the manager in the load function:
public function load(ObjectManager $manager)
{
//...
}

Performance issue with php/apache/windows. Connection reset

I'm having a rather big problem with a site performance. It's a php site on Apache on Windows Server 2003.
Web site is basically crashing with 'connection was reset' or 'cannot load web page' quite often. httpd process in Windows takes about 100mb on normal traffic, having about 1gb of memory still free
This is first time I host a php site on Windows (WIndows was requirement in this case) and I'm not sure what are my options
Thanks
Apache log is displaying the following (sorry for pasting it like that, couldn't do it as 'code block' from some reason. This surely doesn't look right. Any ideas what could be going on?
[Tue Nov 08 16:44:43 2011] [notice] Parent: Received restart signal --
Restarting the server.
[Tue Nov 08 16:44:43 2011] [notice] Child 2072: Exit event signaled.
Child process is ending.
httpd.exe: Could not reliably determine the server's fully qualified
domain name, using 192.168.67.1 for ServerName
[Tue Nov 08 16:44:44 2011] [notice] Apache/2.2.17 (Win32)
mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.2.17 configured -- resuming normal
operations
[Tue Nov 08 16:44:44 2011] [notice] Server built: Oct 18 2010 01:58:12
[Tue Nov 08 16:44:44 2011] [notice] Parent: Created child process 7692
httpd.exe: Could not reliably determine the server's fully qualified
domain name, using 192.168.67.1 for ServerName
httpd.exe: Could not reliably determine the server's fully qualified
domain name, using 192.168.67.1 for ServerName
[Tue Nov 08 16:44:44 2011] [notice] Child 2072: Released the start
mutex
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Child process is
running
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Acquired the start
mutex.
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Starting 1000 worker
threads.
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Starting thread to
listen on port 2090.
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Starting thread to
listen on port 8011.
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Starting thread to
listen on port 8080.
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Starting thread to
listen on port 443.
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Starting thread to
listen on port 80.
[Tue Nov 08 16:44:45 2011] [notice] Parent: child process exited with
status 0 -- Restarting.
httpd.exe: Could not reliably determine the server's fully qualified
domain name, using 192.168.67.1 for ServerName
Windows event viewer is throwing the following
Error - VsJITDebugger. An unhandled win32 exception occurred in httpd.exe [4416]. Just-In-Time debugging this exception failed with the following error: Debugger could not be started because no user is logged on.
Can anyone help with this?
That '[notice] Parent: child process exited with status 0 -- Restarting' is describing the issue here. Tho it describes it in vary vague way. Server is basically restarting on it's own every few minutes. I took the site down with a holding page and the error and restart ddidn't occure. I added an html page and bombed it with combinations of requests using AB. It would always crash at requests close to number of ThreadsPerChild specified in mpm config, which I have set to 1000. Each crash followed with an error
apr_socket_recv: An existing connection was forcibly closed by the remote host.
(730054)
That error only displays when benchmarking. Nothing like that appears in apache log. As soon I switch the site back live, it starts to crash every few minutes. The site generates about 100 requests per page and is also using 2-3 ajax calls per page (while loading)
I spent hours searching the web for possible solutions. Found nothing that fits. I'm completely out of options. I'm not even experienced running apache on windows as during 5 years I work in the business I never had to run php sites on Windows. I haven't seen such error on linux neither
There are two places where you should have a look:
Regular Apache logs, located in the logs folder inside Apache installation.
Windows event viewer, located in Windows control panel
In particular, the second one will log Apache crashes and will possibly reveal additional details.

Parent: Received shutdown signal -- Shutting down the server

Using wampserver and receiving this error:
Parent: Received shutdown signal -- Shutting down the server.
Google doesn't seem to have any solutions that work. Any ideas?
[Mon Jul 25 19:07:02 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
[Mon Jul 25 19:07:02 2011] [notice] Child 5828: Child process is running
[Mon Jul 25 19:07:02 2011] [notice] Child 5828: Acquired the start mutex.
[Mon Jul 25 19:07:02 2011] [notice] Child 5828: Starting 64 worker threads.
[Mon Jul 25 19:07:02 2011] [notice] Child 5828: Starting thread to listen on port 80.
[Mon Jul 25 19:07:40 2011] [notice] Parent: Received shutdown signal -- Shutting down the server.
[Mon Jul 25 19:07:40 2011] [notice] Child 5828: Exit event signaled. Child process is ending.
[Mon Jul 25 19:07:41 2011] [notice] Child 5828: Released the start mutex
[Mon Jul 25 19:08:05 2011] [notice] Child 5828: All worker threads have exited.
[Mon Jul 25 19:08:05 2011] [notice] Child 5828: Child process is exiting
[Mon Jul 25 19:08:05 2011] [notice] Parent: Child process exited successfully.
Look at the Apache error log.
This error almost always occurs when another user shuts down a multi-user server. The Apache error log will tell you what happened so we can help if there are further issues.
Edit
Try this- go to C:\WINDOWS\System32\drivers\etc and make sure you have the following in it:
127.0.0.1 localhost
Restart WAMP, and see if anything has changed.
I got the same error. So, I quit the skype and run the wamp as administrator it works. After that I changed the skype listen port to 88. Now the wamp works fine.
Its the port conflict. So, either you may change the localhost port to 88 in httpd.config file.
This can also be caused by own stupidity, like in my case:
I've had a script on my server (Windows 2008 R2) that was configured to run every 5 minutes. It contained the following two lines:
net stop Apache2.4
net start Apache2.4
Strange enough this script was present for years and did never cause any remarkable effect for my websites. Only recently, Uptime Robot detected some downtimes.
To be honest, I don't know anymore why I had this script configured at all.
Solution:
To solve this, I simply deactivated the script in the Windows Task Scheduler.
Have you been messing with your httpd.conf file? I was messing with mine, and changed the first "listen" bit to Listen 8080 and got rid of a the 303 error and am able to start apache. Now I have a 404 error...which is an improvement I guess.
I have both iis and wamp installed on my windows machine, and accidentally I have opened iis for port 80, which caused the error you have experienced.
Either change the port that Wamp listens to, either the port the IIS listens to

wamp server not working? or bad php code

I have this PHP code:
<?php
$username="root";
$password="******";// censored out
$database="bazadedate";
mysql_connect("127.0.0.1",$username,$password); // i get unknown constant localhost if used instead of the loopback ip
#mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM backup";
$result=mysql_query($query);
$num=mysql_numrows($result);
$i=0;
$raspuns="";
while ($i < $num) {
$data=mysql_result($result,$i,"data");
$suma=mysql_result($result,$i,"suma");
$cv=mysql_result($result,$i,"cv");
$det=mysql_result($result,$i,"detaliu");
$raspuns = $raspuns."#".$data."#".$suma."#".$cv."#".$det."#";
$i++;
}
echo "<b> $raspuns </b>";
mysql_close();
?>
And it should return a single string containing all data from the table. But it says "connection reset when loading page".
the log is :
[Tue Jun 15 16:20:31 2010] [notice] Parent: child process exited with status 255 -- Restarting.
[Tue Jun 15 16:20:31 2010] [notice] Apache/2.2.11 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Tue Jun 15 16:20:31 2010] [notice] Server built: Dec 10 2008 00:10:06
[Tue Jun 15 16:20:31 2010] [notice] Parent: Created child process 2336
[Tue Jun 15 16:20:31 2010] [notice] Child 2336: Child process is running
[Tue Jun 15 16:20:31 2010] [notice] Child 2336: Acquired the start mutex.
[Tue Jun 15 16:20:31 2010] [notice] Child 2336: Starting 64 worker threads.
[Tue Jun 15 16:20:31 2010] [notice] Child 2336: Starting thread to listen on port 80.
[Tue Jun 15 16:20:35 2010] [notice] Parent: child process exited with status 255 -- Restarting.
[Tue Jun 15 16:20:35 2010] [notice] Apache/2.2.11 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Tue Jun 15 16:20:35 2010] [notice] Server built: Dec 10 2008 00:10:06
[Tue Jun 15 16:20:35 2010] [notice] Parent: Created child process 1928
[Tue Jun 15 16:20:35 2010] [notice] Child 1928: Child process is running
[Tue Jun 15 16:20:35 2010] [notice] Child 1928: Acquired the start mutex.
[Tue Jun 15 16:20:35 2010] [notice] Child 1928: Starting 64 worker threads.
[Tue Jun 15 16:20:35 2010] [notice] Child 1928: Starting thread to listen on port 80.
Any idea why it outputs nothing?
$num=mysql_numrows($result);
should be
$num=mysql_num_rows($result);
Thats atleast 1 issue.
You should also look into mysql_fetch_assoc...
# this will loop through each record
while($row = mysql_fetch_assoc($result)) {
$data = $row['data'];
$sum = $row['suma'];
....
}
You need to enable error reporting to see what's going on... Edit php.ini, and set error_reporting=2147483647 and display_errors=1. Then run the script again to check for all errors...
From the log snippet, something's killing the Apache child handling the request, which causes an immediate shutdown of the TCP connection, which your browser sees as a "Connection reset".
You may want to investigate using 'localhost' instead of '127.0.0.1' for your database connection. MySQL treats "localhost" differently than an IP address, and tries to connect via sockets, rather than a TCP connection - this is a speed optimization as local sockets are faster than TCP sockets. Your MySQL install may not be listening for TCP connections (skip_networking = 1).
As well, you should NEVER connect to your database as the root account, especially if this will be a public-facing site. The root account can access anything and do anything in MySQL, which is NOT what you want to expose to the world. Read up on the GRANT syntax and create a MySQL account with limited privileges and use that instead. Most likely your site would only need insert/update/select/delete.
Beyond that, change your query fetching logic to use what Lizard suggested above, and start doing some debugging - figure out which line is causing the error, and how many iterations it took to get there. You may be exhausting some kind of resource which kills Apache/PHP.
I have experienced this error many times and the solution for me was to increase the apache binary (apache.exe or httpd.exe) stack size. You will need the Visual studio to do that, but you can use the trial version, as I did. You don't even need to turn it on. The command is:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64>editbin /STACK:8000000 "c:\Program Files (x86)\WAMP\apache\bin\apache.exe"
Change the paths above according to your environment of course.
In the Visual studio directory VC/binary/ there are several utilities by the name editbin.exe. Use the one suitable for you platform or try them one by one, until it works (as I did).

PHP's configuration setting 'error_log' is not working

What am I doing wrong here?
I have error_log set in the .ini file along with error_reporting = E_ALL | E_STRICT.
What else am I missing? This usually gave it to me. I want this set in the .ini file and not in my scripts.
Another interesting thing that is happening is that when I purposefully try and throw an error in one of my scripts, Apache restarts over and over again.
This is my event log after one error. Look at the timestamp.
Wed Nov 04 19:34:23 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Nov 04 19:34:23 2009] [notice] Server built: Sep 28 2009 22:41:08
[Wed Nov 04 19:34:23 2009] [notice] Parent: Created child process 1700
[Wed Nov 04 19:34:23 2009] [notice] Child 1700: Child process is running
[Wed Nov 04 19:34:23 2009] [notice] Child 3008: Released the start mutex
[Wed Nov 04 19:34:23 2009] [notice] Child 1700: Acquired the start mutex.
[Wed Nov 04 19:34:23 2009] [notice] Child 1700: Starting 64 worker threads.
[Wed Nov 04 19:34:23 2009] [notice] Child 1700: Starting thread to listen on port 80.
[Wed Nov 04 19:34:24 2009] [notice] Child 3008: All worker threads have exited.
[Wed Nov 04 19:34:24 2009] [notice] Child 3008: Child process is exiting
[Wed Nov 04 19:34:53 2009] [notice] Parent: child process exited with status 128 -- Restarting.
[Wed Nov 04 19:34:53 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Nov 04 19:34:53 2009] [notice] Server built: Sep 28 2009 22:41:08
[Wed Nov 04 19:34:53 2009] [notice] Parent: Created child process 3656
[Wed Nov 04 19:34:53 2009] [notice] Child 3656: Child process is running
[Wed Nov 04 19:34:53 2009] [notice] Child 3656: Acquired the start mutex.
[Wed Nov 04 19:34:53 2009] [notice] Child 3656: Starting 64 worker threads.
[Wed Nov 04 19:34:53 2009] [notice] Child 3656: Starting thread to listen on port 80.
[Wed Nov 04 19:34:53 2009] [notice] Parent: child process exited with status 128 -- Restarting.
[Wed Nov 04 19:34:54 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Nov 04 19:34:54 2009] [notice] Server built: Sep 28 2009 22:41:08
[Wed Nov 04 19:34:54 2009] [notice] Parent: Created child process 3980
[Wed Nov 04 19:34:54 2009] [notice] Child 3980: Child process is running
[Wed Nov 04 19:34:54 2009] [notice] Child 3980: Acquired the start mutex.
[Wed Nov 04 19:34:54 2009] [notice] Child 3980: Starting 64 worker threads.
[Wed Nov 04 19:34:54 2009] [notice] Child 3980: Starting thread to listen on port 80.
[Wed Nov 04 19:34:54 2009] [notice] Parent: child process exited with status 128 -- Restarting.
[Wed Nov 04 19:34:54 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Nov 04 19:34:54 2009] [notice] Server built: Sep 28 2009 22:41:08
[Wed Nov 04 19:34:54 2009] [notice] Parent: Created child process 1600
[Wed Nov 04 19:34:54 2009] [notice] Child 1600: Child process is running
[Wed Nov 04 19:34:54 2009] [notice] Child 1600: Acquired the start mutex.
[Wed Nov 04 19:34:54 2009] [notice] Child 1600: Starting 64 worker threads.
[Wed Nov 04 19:34:54 2009] [notice] Child 1600: Starting thread to listen on port 80.
[Wed Nov 04 19:34:55 2009] [notice] Parent: child process exited with status 128 -- Restarting.
[Wed Nov 04 19:34:55 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Nov 04 19:34:55 2009] [notice] Server built: Sep 28 2009 22:41:08
[Wed Nov 04 19:34:55 2009] [notice] Parent: Created child process 1068
[Wed Nov 04 19:34:55 2009] [notice] Child 1068: Child process is running
[Wed Nov 04 19:34:55 2009] [notice] Child 1068: Acquired the start mutex.
[Wed Nov 04 19:34:55 2009] [notice] Child 1068: Starting 64 worker threads.
[Wed Nov 04 19:34:55 2009] [notice] Child 1068: Starting thread to listen on port 80.
[Wed Nov 04 19:34:55 2009] [notice] Parent: child process exited with status 128 -- Restarting.
[Wed Nov 04 19:34:55 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Nov 04 19:34:55 2009] [notice] Server built: Sep 28 2009 22:41:08
[Wed Nov 04 19:34:55 2009] [notice] Parent: Created child process 3220
[Wed Nov 04 19:34:56 2009] [notice] Child 3220: Child process is running
[Wed Nov 04 19:34:56 2009] [notice] Child 3220: Acquired the start mutex.
[Wed Nov 04 19:34:56 2009] [notice] Child 3220: Starting 64 worker threads.
[Wed Nov 04 19:34:56 2009] [notice] Child 3220: Starting thread to listen on port 80.
This has been asked 1000 times and I have browsed through the different posts before posting this, but I have not found an answer. As long as I have been programming with PHP, this have always been a nightmare to get working.
Check PHP-FPM is not explicitly setting error_log:
Make sure the file /etc/php-fpm.d/www.conf does not contain php_admin_value settings for error_log. Search for the following and comment them out using a semi-colon:
; NOTE: If these are set, ini_set('error_log', 'path') will have no effect
; inside your php code, and this will be forced to be the value always.
; php_admin_value[error_log] = /var/log/php-fpm/www-error.log
; php_admin_flag[log_errors] = on
Then restart php-fpm:
systemctl restart php-fpm
Check Apache .htaccess files are not setting the error_log value using
php_admin_value settings in the Apache configuration files cannot be overridden, so make sure you don’t have any php_admin_value for the error_log setting in the Apache configuration files. Also check for php_value settings just in case.
PHP Website - How to change configuration settings
Flimm's Troubleshooting Guide
Here is my troubleshooting guide to error_log() calls not working.
Look at your server's configuration to find out where the default error log file is.
This depends on which server you're using. To get you started, have
a look at Apache's ErrorLog option if you're using Apache or
Nginx's error_log option if you're using Nginx. Make sure it
is set to a file. If you're using a tool like Valet, note that it's
using server software like Nginx behind the scenes.
Check the permissions of your server's error log file. On Unix-like systems, it should be writeable by the correct user and group, and the permissions of the parent directory and all its ancestors need to be correct as well. Use chmod and chown.
Check the configuration of PHP in the .ini files. Specifically, check for log_errors = On and error_reporting = E_ALL | E_STRICT and error_log = /tmp/example/php_errors.log (see docs for log_errors, error_reporting and error_log configuration settings). To find the .ini file, look at the output of phpinfo();. If error_log is not set, by default it goes to the error log for the server, mentioned in the previous steps. If error_log is set to a file, it should already exist and be writeable, just like in previous steps. Remember to restart the server after configuration changes.
Check that PHP's settings aren't being changed by server configuration. Your server's configuration (even .htaccess) can change PHP configuration settings. In Apache, this is done using php_admin_value and php_admin_flag (docs). For instance, you may find in your .htaccess file this line: php_admin_flag[log_errors] = off. Remember to restart the server after configuration changes. At this point, you should be able to create a test file test.php with the contents <?php error_log("test");, restart your server, and open the URL in your browser, and you should be able to see test in your error log (either the server's, or the one specified by error_log = ). But keep reading.
Check that PHP's settings aren't being changed at run-time. The log_errors option can be changed at runtime by running ini_set('log_errors', 1);, and so can the other configuration options error_reporting and error_log. Also note there is a special error_reporting() PHP function which changes the configuration at run-time. Search your code-base for any invocations of ini_set or error_reporting. WordPress for example does run these depending on the value of WP_DEBUG.
Other things to look at: You may be having permission issues in SELinux (see this answer).
You also need to set log_errors = On in file php.ini.
In case anyone else is having trouble getting their local development environment to log errors, here's what fixed it for me:
On Windows, error_log must be set to the complete path to the log for error_log() to work (error_log = c:\apache\php_errors.log). However, if error_log = php_errors.log with no path, php will still be able to log startup errors such as
PHP Startup: Unable to load dynamic library 'ext\php_mysqli.dll' - The specified module could not be found
The problem I ran into was that the error log I had designated was write-protected. All my .htaccess settings were correct, but PHP just couldn't write to the error log, because it didn't have any permissions. This fixed it right up for me:
chmod 777 watermellon-app-errors.log
Obviously, you're going to want to change the .log part to whatever file you're using for a log.
If the error_log directive is set, the file will be used for recording PHP errors. When it is not set, errors will be logged to the Apache log. Take a look at error_log.
The error_log file and the directory it's in must be writable by the user that Apache is running under. If the file isn't being created, it's probably due to a permissions issue.
I don't know for sure why Apache would be crashing on you, but I'm guessing it's a permissions issue of some sort.
I don't understand why, but the error log is now working. Here is what I did.
I gave up and commented back out the error_log directive and closed the ini file. I ran the script with the parse error to see if Apache would still crash and I got the PHP error in the log file. This is freaky, because the ini file no longer has error_log enabled and my script is not using ini_set().
In my case, on a CentOS development server, after a full yum update, the permission on /var/log/http was changed to 700 and the user to 'root', so the user 'apache' wasn't able to enter or write into it.
It was still able to write into the existing file /var/log/httpd/error.log, but it wasn't able to create a new file, as I use date-suffixed log files.
Issuing the command
chown apache /var/log/httpd
solved the problem.
If you are using Fedora, SELinux (enabled by default) will prevent Apache / httpd from appending errors to your log file even when your file is specified in file php.ini and its containing directory has all permissions allowed.
You can see if this is happening by looking at your system log file in /var/log/messages
The ideal solution is to configure SELinux to allow access to the log file.
The quicker solution is to disable SELinux in /etc/selinux/config by setting SELINUX to disabled.
You'll need to reboot your system after doing this for the change to take effect.
For me, manually creating the file, /var/log/php_error.log, solved the issue:
In file php.ini, configure log to file
log_errors = On
error_log = /var/log/php_error.log
Restart Apache
sudo systemctl restart apache2
Create the log file, for example:
sudo touch /var/log/php_error.log
Give the correct rights (owner must be Apache)
sudo chown www-data:root /var/log/php_error.log
(And if not already set)
sudo chmod 0644 /var/log/php_error.log
Test this way, for example:
sudo vim /var/www/.../index.php
<html>
<body>
PHP file:
<?php
echo "Hello, World!";
trigger_error("User error in PHP", E_USER_ERROR);
?>
</body>
</html>
Check the error is written
sudo less /var/log/php_error.log
For further debugging:
phpinfo();
It shows the current error_log setting, next to the error_log value in phpinfo() and can be useful when a vhost isn't logging.
I ended up here after that setting got overridden from file php.ini and the vhost. I ended up logging to syslog.
As bradym said, check whether you have write permissions to the directory where you PHP error log is located for the Apache user. If you created a log file with written permissions it's not enough; the directory should have them too.
I had the same issue and fixed it by doing this:
chmod 0777 -R /var/log/apache2
apachectl restart
I think PHP runs as user www-data while access to /var/log/apache2 is limited to root. So, this fixes it.
The error_log = "C:\php\Log\error.log" line was not working for me either. The solution for me was that you shouldn't create the error.log yourself, because PHP will do it for you. See the PHP message board. I'm using PHP 5.2 on a Windows Server 2008 server.
This did the trick for me.
setsebool -P httpd_unified 1
Please note, this would be the preferred method below to try first:
semanage fcontext -a -t httpd_sys_rw_content_t 'errorLogNameHere.error.log
restorecon -v 'errorLogNameHere.error.log'
This answer was derived from the logs from executing this command line:
journalctl -xe
Further information on the system I was running on:
PHP 7.0 and CentOS 7
I am not sure if it's not obvious, but the issue was Apache's configuration to writing files. I did try chmod 777, chmod a+w on the logging directory, but this didn't work for me.

Categories