Php Svelte-无法在localhost下更新json文件
我使用一个简单的PHP文件来更新一个非常简单的json文件。 在我构建应用程序之后,读取和更新文件在生产环境中非常有效(但在开发模式下运行时则不然) 以下是基于PHP的保存/更新代码:Php Svelte-无法在localhost下更新json文件,php,json,localhost,svelte,Php,Json,Localhost,Svelte,我使用一个简单的PHP文件来更新一个非常简单的json文件。 在我构建应用程序之后,读取和更新文件在生产环境中非常有效(但在开发模式下运行时则不然) 以下是基于PHP的保存/更新代码: <?php ini_set('display_errors', 1); ini_set('error_reporting', E_ALL|E_STRICT|E_NOTICE); header("Access-Control-Allow-Origin: *");
<?php
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL|E_STRICT|E_NOTICE);
header("Access-Control-Allow-Origin: *");
$data = file_get_contents('php://input');
$filename = "./file.json";
$status = file_put_contents($filename, $data);
echo $status;
?>
构建苗条的应用程序并运行它…一切正常(在IIS上)
但在开发过程中,该文件没有更新
可以读取生产和开发中的文件。
但在开发过程中永远不会更新文件(仅在生产过程中有效)
我认为它与权限有关,但是,经过几天&几天之后,我无法使用在开发中使用“npm run dev”时创建的节点服务器来确定要使用哪些头文件或配置来使其在开发中工作
我们将一如既往地感谢您的帮助。“我认为这与CORS有关”-为什么?考虑到您是使用相对URL发出请求,这究竟应该在哪里跨来源?@cBroe我认为是这样,因为端口不同。当节点服务器启动本地主机时,它不使用典型的端口80。在这种情况下,它默认为端口5000。因此,它看起来像一个不同的主机。@CBroe认为本地主机中可能存在权限问题。不知道。有什么想法吗?如果整个事情都在5000端口下运行,那就不是CORS的问题了。CORS仅适用于通过
:80
请求此运行的页面,然后向:5000
上运行的后端发出请求,或者以其他方式请求。另外,CORS错误应该在浏览器控制台中为您提供清晰的消息。“不工作”对我们来说还不够。如果这是文件系统权限的问题,那么如果file\u put\u contents
因此失败,PHP应该向您发出警告-如果您启用了正确的PHP错误报告功能。确保情况属实,然后在浏览器开发工具的“网络”面板中检查从服务器得到的实际响应。
async function savefile() {
data = "[1,0]";
const response = await fetch("./save.php", {
method: "POST",
mode: "cors",
cache: "no-cache",
credentials: "same-origin",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
redirect: "follow",
referrerPolicy: "no-referrer",
body: data,
}).then((response) => {
if (!response.ok) {
console.log("file not save.");
}
if (response.ok) {
console.log("file saved");
}
});
if (testing) console.log("END savefile");
}