включая php файл с другого сервера с php

У меня есть два файла PHP, расположенные на различных серверах, один в http://www.mysite.com/main.php, другой в http://www.sample.com/includeThis.php.

Я хочу включать второй файл от первого.

Содержание второго файла похоже на это:

<?php
$foo = "this is data from file one";

И первый файл:

<?php
include "http://www.sample.com/includeThis.php";
echo $foo;

Есть ли какой-либо способ, которым я могу сделать это?

25
задан NikiC 11 November 2011 в 21:22
поделиться

5 ответов

Нет, эта настройка отключена/не разрешена по умолчанию в большинстве веб-серверов (php.ini), поэтому вы не можете использовать include для включения файлов с удаленных адресов по причинам безопасности.

Если вы все же хотите разрешить включение удаленных файлов, директива allow_url_include должна быть установлена в On в php. ini

Но опять же, это плохая практика, с точки зрения безопасности; и поэтому она обычно отключена (я никогда не видел ее включенной, на самом деле)

Если вы хотите прочитать содержимое удаленного файла, хотя, вы можете использовать file_get_contents функцию вместо этого НО это будет возвращено как чистый код HTML разметки, не будет никакого серверного кода.

33
ответ дан 28 November 2019 в 21:23
поделиться

Когда вы пытаетесь перейти между доменами, как вы предложили, вы фактически не включаете файл, который находится там, готовый к выполнению - процесс другой. Машине необходимо вернуть файл через http, а это не то, о чем идет речь в инструкции include.

Кроме того, если вы используете общий хостинг, PHP часто настраивается так, чтобы вы не выходили за пределы вашего собственного домена.

Если вы не находитесь под этим ограничением, одним из решений может быть использование PHP для копирования копии файла с другого сервера и последующего включения ее, как только она будет размещена в вашем домене. Другой подход может заключаться в написании небольшого сценария "развертывания", который копирует его везде, где это необходимо, всякий раз, когда вы вносите изменения ...

Надеюсь, это поможет ...

Мартин

0
ответ дан 28 November 2019 в 21:23
поделиться

переименуйте первый в .txt
затем подумайте дважды, вы уверены, что вам нужно междоменное включение

0
ответ дан 28 November 2019 в 21:23
поделиться

Используйте file_get_contents, чтобы открыть файл, добавьте его ко второму файлу следующим образом:

$secondFile = file_get_contents('http://www.sample.com/includeThis.php');
file_put_contents('your_file', $secondFile, FILE_APPEND);

Это будет работать, если вы хотите поместить его в конец файла. Затем просто сделайте включение в свой файл.

В любом случае, как я уже сказал, это рискованно и опасно IMO, особенно если вы не уверены в содержании, которое он имеет внутри.

Кроме того, your_file должен быть фактическим путем к серверу, а не URL-адресом.

0
ответ дан 28 November 2019 в 21:23
поделиться

После прочтения ваших комментариев, в которых вы заявляете, что хотите сделать это в качестве средства защиты от копирования, я решительно отвечу , забудьте . Это не то, как работает защита от копирования.

Единственное, что вы можете сделать с помощью include () , - это получить исходный код из другого места для интерпретации в локальном интерпретаторе . Это по-детски легко взломать: злоумышленнику достаточно было бы echo () полученный код.

Выполнение удаленного сценария удаленно (на вашем сервере) вам не поможет, потому что состояние этого сценария (переменные, функции ...) не будет присутствовать в сценарии, из которого вы его вызываете.

У вас есть следующие варианты:

  • Компиляция / кодирование / обфускация сценария, возможно, для его выполнения потребуется определенный модуль PHP (много вопросов об этом на SO)

  • Создание реальной веб-службы (например, с использованием SOAP ), который работает на вашем сервере и выполняет запрошенные операции

Тем не менее, чего бы он ни стоил, я лично не покупаю и не рекомендую клиентам приобретать закодированные сценарии и сценарии, которым необходимо «позвонить домой» для работы . Я верю в защиту ваших продуктов с помощью строгого лицензионного соглашения (которое напугает бизнес-клиентов и заставит их покупать ваш продукт, потому что риск быть пойманным на краже слишком высок)

3
ответ дан 28 November 2019 в 21:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: