【发布时间】:2021-04-24 10:55:08
【问题描述】:
我一直在开发一个需要为项目托管的网站。我的网站有多个创建、删除、读取或编辑 XML 文件的 PHP 脚本。我遇到了一个令人困惑的问题——该站点在本地托管时运行良好,但如果它在外部托管,它似乎根本无法与 XML 文件交互。它就像不存在文件一样,并且无法创建新文件。我对 Hiroku 和 InfinityFree 有完全相同的问题,这让我相信是我做错了什么,打败了我。我在本地和在线托管时使用完全相同的文件结构。
我很难决定在这里发布什么,因为我没有收到任何错误,而且问题甚至可能不在代码中,可能是我在托管服务上设置了错误。我希望你们中的一个优秀的人过去曾遇到过类似的问题!
【问题讨论】:
-
您如何与您的主机交互? FTP?您的 FTP 用户与网络服务器运行的用户相同吗? (如果它是共享主机则不太可能。)您是否尝试过使用主机上的文件权限?首先,您可以尝试将主机上的文件权限设置为
777并查看是否可行。请注意,这可能不是在生产中永久使用的一组好权限,但它可能会帮助您查看文件权限是否是问题。 -
另外就是你说的本地和远程文件结构是一样的,但是是吗?同样,对于共享主机,它可能不是。正如网络服务器看到的路径和您从登录中看到的路径可能不同。在您的代码中,您是使用绝对路径(从
/开始)还是脚本文件的相对路径?请记住,您可以使用 PHP 的魔法__DIR__常量在运行时获取脚本文件的当前路径,以帮助您构建相对路径。 -
到目前为止,我一直偷懒,直接通过网络文件管理器(InfinityFree)和Git(Hiroku)上传文件。这个网站真的不需要扩展或持久。我应该为此使用 FTP 吗?
-
不,绝对不需要使用 FTP。如果网络文件管理器显示并允许您更改权限就足够了。
-
非常感谢。
777的文件权限仍然存在问题。据我了解,__DIR__应该以类似于我的代码中这一行的格式使用:if(file_exists('__DIR__/../users/' . $username . '.xml')),但我在这里可能错了,因为它仍然是同一个问题?