PHP文件下载而不是执行 - WAMP服务器

9
我正在使用WAMP服务器来运行我的PHP脚本。我在WWW文件夹中创建了一个测试文件夹,并尝试使用HTML表单操作执行PHP脚本。但是,它不是执行,而是下载PHP文件。可能的原因是什么?
Apache 2.4.9 PHP 5.5.12
<!DOCTYPE html>
<html>
<body>

<form enctype="multipart/form-data" action="uploader.php" method="POST">
  <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
  Choose a file to upload: <input name="uploadedfile" type="file" /><br />
  <input type="submit" value="Upload File" />
</form>

</body>
</html>

PHP脚本(uploader.php)


<?php
 phpinfo();
?>

你启用了mod_php吗? - Toxantron
phpinfo();能正常工作吗? - Agu V
在你的 httpd.conf 中,你还需要加入以下这行代码:AddType application/x-httpd-php .php - YvesLeBorg
你能让我们看看你的 PHP 文件吗? - Agu V
所以,如果您直接访问uploader.php,则会得到phpinfo()结果,但是如果您向uploader.php提交POST请求,则会下载文件?这对我来说毫无意义。您确定您正在查看与表单发布到的文件相同的文件吗? - Mike
显示剩余7条评论
5个回答

10

如果您从cPanel托管的站点中获取了文件,请检查文件的Web根文件夹中的.htaccess文件,并确保禁用此项(可能类似于php56、php71等):

# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php72” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php72 .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit

就像这样:

# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php72” package as the default “PHP” programming language.
#<IfModule mime_module>
#  AddHandler application/x-httpd-ea-php72 .php .php7 .phtml
#</IfModule>
# php -- END cPanel-generated handler, do not edit

4
在我的情况下,问题的原因是.htaccess文件中有这个指令,在Joomla目录中运行php7(旧服务器允许在不同目录使用不同的PHP版本)。
<IfModule mime_module>
  AddType application/x-httpd-ea-php70 .php .php7 .phtml
</IfModule>

我只是在新服务器上将它们注释掉,然后它就起作用了。


0
你能在这里提交你的httpd.conf文件吗?你也可以尝试将以下代码添加到你的httpd.conf文件中并重新启动WAMP。
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3

AddHandler application/x-httpd-php .php .phtml
AddHandler x-httpd-php .php .phtml

-1

其中一个原因可能是在您的php.ini文件中关闭了"file_uploads"。因此,请转到您的php.ini文件并检查是否已启用file_uploads = On


-3
在我的情况下,我必须删除.htaccess文件才能使其正常工作。

enter image description here


这不是一个真正的解决方案,很少有人会认为这是一个适用于超过一小部分人的修复方法,因为 .htaccess 文件包含了关于 Apache 如何处理某些请求的指令。 - Adam
谢谢您清理了-1。我今天遇到了同样的问题,我所做的是改变.htaccess文件。如果对我有效,那肯定是一个解决方案。 - Muhammad Saqib
1
这对于您的特定问题来说是可以的,但是 .htaccess 不是原因。 - Adam
在这里,我们提供每一个可能的解决方案,因为我们不确定哪个用户会以什么样的情况来查看这个帖子。我只在我的解决方案经过验证后分享它。因此,它有可能也能帮助其他用户。如果它适用于“特定”的问题,那么它就可以在这里 :) - Muhammad Saqib

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接