我可以包含来自其他服务器的类文件

问题描述 投票:0回答:4

我在server1中有一个类。 server1中的FILE1

<?php
class myObject
  {
    public function __construct()
    {
      echo 'Hello, World';
    }
  }

?>

server2中的FILE 2

$section = require('http://xx.xxx.xxx.x/plugins/myObject.php');
$intance = new myObject();

当从server1本身的php文件中调用file2时,会创建Object。我可以在浏览器中看到“Hello World”。但是当从server2调用file2时它失败了。我找不到致命的错误类。我也尝试过include / file_get_contents / read / __autoload / spl_autoload_register方法。从其他服务器调用我的类没有任何帮助。

这可能吗?任何人都可以建议替代方案?请帮忙

更新:我有fopen并在server2中包含url,我试图包含文件。实际上我需要这个类和我的网站是两个服务器。

场景:我想在server2中建立一个钱包网站。我在另一台服务器[s1]中有必要的插件。我编写了一个与服务器1本身的插件交互的类文件。我打算在更多服务器上安装钱包网站。但所有这些网站都将与server1中的类进行交互。如果我能以某种方式将该类中的代码获取到我的网站,那么我也可以创建对象并从其他服务器调用类方法。请提出其他实施方法。

更新2:我可以构建类似API的东西,我的所有网站都会向S1中的主类发送请求并获得响应。一个例子会有所帮助

php class
4个回答
2
投票

这可能吗?

不,PHP代码永远不会离开服务器。这就是为什么有像Composer这样的依赖管理工具。


1
投票

如果要从服务器1在服务器2上运行代码,则需要实现执行此操作的Web服务。所以服务器2“调用”服务器1上的php文件它不“需要”它。尝试这样的事情:

文件1服务器1

   <?php
    class myObject
    {

        public function __construct()
        {
          echo json_encode(['result'=>'really cool data result'])
        }
    }

   new myObject();

    ?>

文件2服务器2:

<?php

set_time_limit(0);

$url = "http://xx.xxx.xxx.x/plugins/myObject.php";

$ch = curl_init();
// Disable SSL verification
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// Will return the response, if false it print the response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Set the url
curl_setopt($ch, CURLOPT_URL,$url);
// Execute
$result_json=curl_exec($ch);
// Closing
curl_close($ch);

$result_obj = json_decode($result_json);

$result = $result_obj->result

如果要在服务器1上运行代码,则必须像这样执行,然后使用服务器1的结果并在服务器2上执行某些操作。您无法使用服务器1上存在的软件在服务器2上运行代码,因为根据定义你不能在另一台机器上存在的一台机器上运行某些东西。


0
投票

您可能需要先下载该文件然后requireing它。


0
投票

不,你不能那样做。即使有非常糟糕的工作要做,你也不应该这样做。

如果您关心安全性,它会使您的代码非常容易受到攻击。

© www.soinside.com 2019 - 2024. All rights reserved.