Nikolay
Nikolay

Reputation: 2214

Why include prevents a php page to load?

I have my index.php page and just afrer my header i want to include a message.php file. This message.php file executes some mysql queries, runs a couple of functions and in the end makes echo of some text.

If i go to mysite.com/message.php - i can see all the text i need in my browser. But if i add the following line:

<?php include "message.php"; ?>

to my index.php, the page loads only until the include statement and then produces 500 internal server error. How is that even possible? I'm totaly stuck here...

EDIT: I've figured it out, thanks for pointing me to the right direction with apache logs. Even though i didn't have the log access, i've made the edit to .htaccess with a statement php_value error_log log.txt. It dumped the error in the txt file in the same directory. The error was produced by a function that was a name that was already in use. That's why a separate enviroment wasn't producing the error.

Upvotes: 1

Views: 7868

Answers (5)

Joop Eggen
Joop Eggen

Reputation: 109623

Try to make a copy of index.php, say copy.php, insert a test.ph include, displaying just some "KILLROY WAS HERE".

If that does work, go for <?php echo "..."; ?>.

if that does not work, place the include elsewhere and/or remove code.

One cause could be a hidden redirect, blocked because output already happened. More likely some global variable was shared.

Upvotes: 0

hohner
hohner

Reputation: 11588

As dm03514 pointed out, it might be that there's something in your message.php which is breaking your code. If there's a fatal error in that file, it'll cause a similar error in your main file.

Ask support for your error_log - this really helps debugging.

Upvotes: 2

Anthony
Anthony

Reputation: 37085

Add the following to the top of your message.php:

 ini_set('display_errors',1); 
 error_reporting(E_ALL);

As everyone has said, there is probably a simple error (maybe a missed quotation mark) that is throwing the error, but in that environment, it gets thrown as a 500 error rather than output to the screen. Enabling the above should reveal the problem.

Upvotes: 6

Your Common Sense
Your Common Sense

Reputation: 158003

Well, if you don't have access to the log files, try to run the same file in any other environment where you can see the errors.

That's the only way available.
Asking strangers to tell you what error you have in your php file makes very little sense, you know ;)

Upvotes: 0

dm03514
dm03514

Reputation: 55972

This is possible becuase you have an error in your message.php file! The next step is to figure out what is throwing the error. You can look at your web servers error logs to see the exact line. To solve this problem you only have to focus on the code in your message.php file.

Upvotes: 1

Related Questions