I have a problem accessing a mongoDB database using the PHP driver.
When I locally run the following code:
<?php
echo "Connecting";
$manager = new MongoDB\Driver\Manager("mongodb://localhost:28124");
echo "Connected";
?>
it works.
However, when I access this php file remotely from the browser, I only see "Connecting" and then the web page hangs with internal server error 500.
I'm running with:
PHP 5.6.25 (cli)
MongoDB: 1.1.8
Apache: 2.2.22
Any ideas?!?!?!?
There is no way of tracing the problem without logs.
Please check your default log, which should be in "/var/log/httpd/error_log" or "/var/log/apache2/error.log" (custom logs might not get all the info) and provide specifics.
If you are not getting anything from the logs, please retry after turning PHP logging on.
In php.ini(of apache dir):
Remove semicolon from in front of below lines
;display_errors
;display_startup_errors
;error_reporting
Set the values to
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
Restart the server, run script, on error, check the logs again.
Note: Reset the php.ini to default values after you are done. Error logging adds significant overhead to execution.
Related
I am getting a blank screen and nothing in the error logs for a php program I am trying to get up and running (it happens to be yourls). What do I need to do to get error logging enabled or to otherwise get an indicate of why the page is not loading (I know there are multiple postings on this but none of the fixes suggested in this posts seems to generate any output and don't seem to work for this specific implementation)?
I'm running php from this install: php-8.0.0-nts-Win32-vs16-x64.zip
I'm running Apache HTTPD from this install: httpd-2.4.46-o111i-x64-vc15.zip
Turns out this was a behavior of the yourls software I was trying to run. It had a flag that turned error logging/messaging off AND it was not compatable with php 8. I switched to php 7 and switched to the php.ini-development config (by renaming it to php.ini) and I am now seeing error messages (the driver for the database is missing).
I recently changed server.
This my new server using FastCGI to interpret PHP.
However, much that I brought from the old server is giving this error again, and the problem is that FastCGI does not return the error to debug, it just returns a "500 internal server error".
With that I'm not exactly sure what line to correct the error occurred.
I have scripts immense, which makes unfeasible review the entire a Code.
Already tried using
try {.. }
in known errors, but still FastCGI returns the 500 error.
I'm not a server administrator to power on mecher environment variables, is there any way to work around these errors from within PHP?
This error may be cause because you didn't set the proper permissions for the directory.
You should set the proper permissions and then try run the script. It should work.
Try running simple php file to see if it shows this error. If so then change permissions. If not then check the logs because the problem may be in your script.
You can also set display_errors to 1 in php.ini, htaccess or inside script
in php.ini look for error_reporting and display_errors
error_reporting = E_ALL
display_errors = 1
Put this inside your code, it'll turn error reporting on.
ini_set('display_errors',1);
error_reporting(E_ALL);
I had the same error, I had the proper permissions.
What fixed my problem was to download Visual C++ Redistributable for Visual Studio 2012 Update 4 x86.
I have PHP in x86 so I downloaded VSU_4\vcredist_x86.exe.
I had just x64 before solving my issue. Installing VSU_4\vcredist_x86.exe solved the problem and now I have both.
I hope it helps!
Yo can download VSU_4\vcredist_x86.exe here:
http://www.microsoft.com/en-us/download/details.aspx?id=30679
I'm confused about where I should be looking for a log file containing php errors on a Windows 2008 Server running IIS 7.5 (I'm more familiar with the Mac OS X setup for this).
In my php.ini file I have log_errors set to "On" but I'm not seeing any php errors in the IIS logs that appear in this folder:
C\inetpub\logs\LogFiles
Is it possible to have the php errors included in this file or do I need to specify a new file just for php errors?
(I'm trying to troubleshoot a site that is generating 500 – Internal server error for a php error. I've found this site http://www.webdigi.co.uk/blog/2009/php-on-windows-server-2008-500-internal-server-error-on-iis/ that explains how I can view the error when accessing the page via an RDP session on the server, but I need to be able to log these and view the log as I won't always have RDP access).
In the php.ini (you can find this under "c:\program files (x86)\php\{PHP Version}") change these settings:
log_errors = On
Then set error_log to syslog for the windows event log:
error_log = syslog
Or specify a location on disk such as:
error_log = C:\Windows\temp\php_errors.log
Make sure that the error_log or log_error values aren't being set elsewhere in the file.
If you are using xampp in windows. The error log can be find in
cd C:\xampp\apache\logs\
Use the following command to display the latest errors
tail -f .\error.log
I have a WAMP 2.2 server running on a Windows 7 box and cannot get PHP error logging working at all.
The file is always blank even after I explicitly trigger USER_ERROR errors, or cause normal ERROR errors.
I'm including the error relevant sections of the php.ini file - hopefully you can find something:
error_reporting = E_ALL
error_log = "c:/wamp32/logs/php_error.log" ;(UNCOMMENTED BY ME)
log_errors = On
display_errors = On
The line ; log_errors is just a comment for the following block, for the purpose of showing you what the settings are in dev vs production. You uncommented four lines which aren't meant to control anything, and I'm surprised your Apache service doesn't have problems starting up because of it.
What you need to do is look for the line:
log_errors = Off
And change the value to On
That said, once you restart the Apache service, the settings should take effect. However, I was unable to get WampServer to properly log php errors despite these settings. Apache will not start up when I specify the error_log parameter.
For me it turned out to be a permissions error. I ended up giving EVERYONE full control of the error log file and it seemed to fix my issue. Best of luck.
Did you try adding these lines to your php file?
ini_set("display_errors", "1");
ini_set("log_errors", "1");
ini_set("error_log", "/wamp64/logs/php_error.log");
Just installed a nginx server with ubuntu 11.04 and after loading my php program i was writing i noticed that no MYSQL queries run. I get no errores, either from PHP nor MYSQL.
The user my PDO connection uses has all priviledges.
When i change the host to any value, i do not get any error either.
I believe mysql is not showing any connection error. How do i check it's enabled? Just checked mysql.conf and i see nothing related to error reporting. Also looked php.ini and all error options are enabled, i also enabled it in-code.
I have no clue, it's useless to work with no kind of error reporting!
Thanks!
Where are your error logs for nginx? Have you looked in those? Is mysql running? Try service mysql status. PHP should still give you an error though if it can't connect to the database. How do you know the queries are not running? What I mean is, what are the symptoms? Maybe the queries are running but your input is bad?
Most important is to try to isolate the problem. 1) Use curl -v http://your_server to make sure nginx is actually serving the pages. 2) Set up a phpinfo.php file in the root web directory with <? phpinfo(); ?> and check the mysql settings and verify where log files for php are being written 3) Try installing phpmyadmin and see if you can connect to the database using that.
Each one of the above eliminates at least 1 of the elements (your program, PHP, nginx, mysql), helping you to narrow down the cause of your problem.
EDIT: Additional instructions for item 2. You are looking for the php error_log setting. If it is not set, the errors should go to stderr, which in this case I think would be your nginx log files (true at least for apache). You could also check that error_reporting is set to some reasonable value (try error_reporting=E_ALL for now). You can set both of these in your php.ini file, or in your program. See the manual in section PHP Error Handling Runtime Configuration. I would do a sanity check by triggering an error in my program at the beginning of the program and making sure the error shows up in the log file:
trigger_error('Want to be a rock star test message', E_USER_WARNING);
If you see your message, you've got the right log file and you should find your other errors (if any - mysql might not be the problem, could be bad input as I mentioned before).