问题:
我已经创建了一个简单的 Web 服务器,其中包含由 google 云服务托管的 apache,但我很难弄清楚如何在提交表单时执行我的 PHP 代码。
目标:
我希望用户能够在表单中输入一些信息并将其发送到服务器。从那里,服务器将运行一些 PHP 代码并将信息写入同一目录中的文件中。
现在如何运作:
当我提交表单而不是执行操作时,它只是在浏览器中将文件作为文本文档打开。
Main.html 中的表单
<form action="processForm.php" method="POST">
Spotify URI: <input type="text" name="uri">
<br/>
Description: <input type="text" name="description">
<br/>
<input type="submit">
</form>
processForm.php
<?php
if(isset($_POST['uri']) && isset($_POST['description'])) {
$data = $_POST['uri'] . '-' . $_POST['description'] . "\n";
$ret = file_put_contents('data.txt', $data, FILE_APPEND | LOCK_EX);
if($ret === false) {
die('There was an error writing this file');
}
else {
echo "$ret bytes written to file";
}
}
else {
die('no post data to process');
}
我不认为这是 PHP 安装不当的问题。当我跑步时
php -v
它会回响
PHP 5.6.29-0+deb8u1 (cli) (built: Dec 13 2016 16:02:08)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
我也遇到过这个问题。 我让 phpinfo() 工作,但表单提交只是以纯文本形式给出 PHP,而不是执行。 Funk 四十九人的想法是正确的。 从 file:///DocumentRoot/Main.html(其中 DocumentRoot 是您计算机上的任何内容)开始,PHP 不会执行。 但从 localhost/Main.html 来看,确实如此。 这是完全相同的文件,但浏览器处理表单的方式不同。
这是一个非常古老的话题,但我仍然没有在这里找到答案。我最近也遇到了同样的问题。问题原来是我的服务器没有运行 PHP 文件。
这是我的问题:
我有一个
index.html
文件,我想在我的本地主机上提供它,所以我使用了 NodeJS 的服务包。
我有一个 contact.php
文件用于通过 AWS SMTP 发送电子邮件,但是当在我的表单中调用它时,它只返回纯文本。
我尝试使用 ChatGPT 几个小时但没有成功,然后我发现我的 npm 服务器无法读取 .php
文件。
解决方案:我通过执行以下操作在我的
contact.php
文件的文件夹中提供了 PHP 服务器:
php -S localhost:<port_number>
我允许来自我的 npm 服务器的跨源请求,并且我在 HTML 表单中调用此 API,如下所示:
<form action="http://localhost:<port_number>/contact.php" method="post">
之后一切都很好:)