访问 PHP 根目录之外的 JSON 文件


Accessing JSON File Outside PHP root directory

我有一个正在创建JSON文件的应用程序和一个使用该JSON文件更新数据库的PHP页面。现在,我希望应用程序和PHP页面在两台不同的机器上运行。因此,我在机器 1 上运行了应用程序,从应用程序创建的 JSON 文件存储在 PHP 文件根目录之外的"公共"目录中。我如何确保 PHP 能够访问此文件,或者更确切地说,我可以在哪里以及如何存储该 JSON 文件以便 PHP 可以使用该文件?

来自 C# 的 JSON 结构:

public class User_Group
{
    public int ID_UserGroup { get; set; }
    public string Name_UserGroup { get; set; }
    public int UserID { get; set; }
}
public class User_Role
{
    public int ID_User { get; set; }
    public string Role_User { get; set; }
    public string User_Role_Description { get; set; }
    public List<User_Group> UserGroup { get; set; }
}
public class Stand_Orte
{
    public int ID { get; set; }
    public string Bezeichnung { get; set; }
    public List<Modul> modul { get; set; }
}
public class Modul
{
    public string ID { get; set; }
    public string Seriennummer { get; set; }
    public string Bezeichnung { get; set; }
    public string StandortID { get; set; }
    public List<Mess_Kanal> MessKanal { get; set; }
}
public class Mess_Kanal
{
    public string ID { get; set; }
    public string ModulID { get; set; }
    public List<LogMess_Daten> LogMessDaten { get; set; }
}
public class LogMess_Daten
{
    public string KanalID { get; set; }
    public string Zeitstempel { get; set; }
}

public class RootObject
{
    public int ID_Project { get; set; }
    public string Name_Project { get; set; }
    public int Receiver_ID { get; set; }
    public string Receiver_Name { get; set; }
    public int UserID { get; set; }
    public User_Role UserRole { get; set; }
    public Stand_Orte Standorte { get; set; }
}

PHP 解码:

$jsonData = file_get_contents("JSON_superproject.json");
$phpArray = json_decode($jsonData);

如果将"JSON_superproject.json"保存到例如 K:''Public''ABC 中,我尝试使用它,例如:file_get_contents@("K:'Public'ABC'JSON_superproject.json");它不起作用。它给出一个错误,即 K:''Public''ABC''JSON_superproject.json 中的文件不在根目录中。

我该如何解决这个问题?有什么想法吗?

谢谢狂欢

我认为您至少有以下选择:

  1. 在树中创建一个 PHP 脚本可以访问的目录,并与第一台机器共享它,并更新第一个应用程序以将文件放在那里。
  2. 创建一个任务计划程序作业,该作业定期将文件从公共复制到树中PHP脚本可以访问的位置。
  3. 使用 HTTP POST 将文件推送到第二台机器到 PHP 脚本,该脚本要么只保存文件以供进一步处理,要么直接处理它。
  4. 使文件可通过 Web 访问(即启动一个新的 Web 服务器实例,其根目录是包含该文件的目录)并通过 http/https 访问该文件。文件是从第一台服务器还是从第二台服务器提供并不重要。
  5. 选择退出 PHP 的安全功能,该功能拒绝访问 PHP 根目录之外的文件(请参阅 http://php.net/manual/en/ini.core.php#ini.open-basedir)。基本上,此选项不是一个好的选择。