为什么PHP脚本被下载而不是被执行

为什么PHP脚本被下载而不是被执行

我在我的 Ubuntu 笔记本电脑上设置了一个本地 LAMP 服务器,用于测试各种 PHP 脚本。

有时,当我做错事时,系统不会显示错误,而是提供我正在测试的脚本供下载。为什么会出现这种情况?如何解决?

答案1

服务器无法将该脚本识别为可在本地执行的脚本,因此将其作为文件提供。

这些行应该出现在您的 Apache 配置中。请注意,根据您的配置,可能需要更改 .so 模块的路径:

# -- 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

重新启动 Apache 服务后,php 应该可以加载到 Apache 中并正常运行。

答案2

我发现发生这种情况的一些原因:

  • 如果服务器上的 php 配置不正确
  • 如果文件没有正确的 .php 扩展名
  • 如果它位于不允许执行的目录中
  • 如果脚本执行时间过长。

我使用的一项测试是在同一目录中创建一个文件 (verify.php),其中包含:

<?php
  phpinfo();
?>

如果该文件在我的浏览器中执行,则前 3 点是正确的

答案3

我同意 Avery 的观点,这是常见原因。但是,您明确表示这只是有时。您是否更改了内容类型标头?

答案4

另请注意,如果您的 .htaccess 文件与您的 php 脚本在同一个文件夹中,则它可能是导致某些执行问题的原因。

例如,如果您从另一台服务器获取了站点文件的副本,则您的 htaccess 文件可能会有如下一行:

AddHandler x-httpd-php5-3 .php

但在您的实际服务器中,您可能正在运行另一个版本的 PHP。因此它无法正确执行。

相关内容