3

I have a local LAMP server set up on my Ubuntu laptop for testing various PHP scripts.

Sometimes, when I do something wrong, instead of getting an error, the script I'm testing is offered for download. Why is that and how can it be fixed?

scribu
  • 337
  • 1
  • 5
  • 10

5 Answers5

2

The server does not recognize the script as something to execute locally, and as such it offers it as a file instead.

These lines should be present in your Apache config. Note that the path may need to be changed for the .so modules, depending on your configuration:

# -- if you're using PHP 5, uncomment this line to activate it
#LoadModule php5_module libexec/libphp5.so

# -- if you're using PHP 4, uncomment this line to activate it
#LoadModule php4_module libexec/libphp4.so

AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps

Follow up with a restart of the Apache service and php should load into Apache to run just fine.

Avery Payne
  • 14,536
  • 1
  • 51
  • 88
1

Some reasons I have found that this happens:

  • if php is not configured correctly on the server
  • if the file doesn't have the correct .php extension
  • if it is in a directory that does not allow execution
  • if the script takes too long to execute.

One test I use is to make a file in the same directory (verify.php) that contains:

<?php
  phpinfo();
?>

If that file executes in my browser, it the first 3 points are ok

Brent
  • 22,857
  • 19
  • 70
  • 102
  • Good call, always have a process to test the environment. It does not have to be elaborate, something simple like Brent's verify.php is perfect. – BillN Jun 13 '09 at 15:33
  • From my experience, if Apache/PHP are set up correctly, it's usually script execution timeout. –  Jun 13 '09 at 17:21
  • It's not a script execution timeout in my case. – scribu Jun 13 '09 at 17:43
0

I would agree with Avery, that's the usual cause. However, you specifically say it's only sometimes. Any chance you are changing the content type header?

Kyle
  • 1,859
  • 2
  • 17
  • 23
  • No, at least I don't think I am. I was actually working on a WordPress plugin and one minute it was working and after modifying something trivial, I got the download dialog. – scribu Jun 13 '09 at 17:47
0

A usual error is to print something to the page before the headers get sent.

Nifle
  • 374
  • 1
  • 8
  • 22
0

Also note that if you have a .htaccess file in the same folder as your php script, it could be the reason for some execution problems.

For example, if you got a copy of the site files from another server, your htaccess file could have a line like:

AddHandler x-httpd-php5-3 .php

But in your actual server you may be running another version of PHP. So it would not excecute right.

Agus
  • 1
  • 1