我在我的 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。因此它无法正确执行。