Использование включает в себя междоменный домен, содержащий код PHP - не удалось - PullRequest
1 голос
/ 23 июня 2010

У меня есть несколько сайтов, размещенных на одном сервере с разными доменами.Я хочу разместить некоторые распространенные сценарии PHP и затем иметь возможность вызывать их из других доменов.

Я немного новичок в своем php, так что прошу извинить попытки кода - я пробовал итерации следующего, которые могут попытатьсяи помочь вам понять, к чему я стремлюсь!

из тегов php ...

include('http://www.mydomain/common_include.php?show_section=$section');

$show_section = $_GET['show_section'];
include('http://www.mydomain/common_include.php');//Then $show_section would be available to the included file/cod

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

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

Заранее спасибо.

#

РЕДАКТИРОВАТЬ ОК ОК - Я понимаю, что это плохая практика, поэтому не буду этого делать ... СПАСИБО ОГРОМНОЕ ЗА QUICK ОТВЕТЫ.Однако есть ли другие рекомендации, как по существу показать это базовое php-приложение на всех сайтах без необходимости добавлять файлы в корень каждого сайта?Просто чтобы предотвратить массовое дублирование сценариев ... (продумывая вслух, вызовите сценарии из БД или любых других решений) Еще раз спасибо за вашу помощь

Ответы [ 5 ]

3 голосов
/ 23 июня 2010

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

Если вы посмотрите документацию PHP.net о include, вы можете найти это:

Если«Обертки fopen для URL» включены в PHP (они находятся в конфигурации по умолчанию), вы можете указать файл для включения, используя URL (через HTTP или другую поддерживаемую оболочку - список протоколов см. В списке поддерживаемых протоколов / оболочек) вместо локального пути.Если целевой сервер интерпретирует целевой файл как код PHP, переменные могут быть переданы во включенный файл, используя строку запроса URL, как при использовании HTTP GET.Строго говоря, это не то же самое, что включение файла и наследование переменной области родительского файла;скрипт на самом деле выполняется на удаленном сервере, а затем результат включается в локальный скрипт.

Это многое объясняет.

1 голос
/ 24 февраля 2013

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

В идеале у вас должно быть достаточно легкое время каждый раз, когда вам нужно обновить плагин / скрипт во всех местах.Вы даже можете настроить автоматизированный процесс, который будет загружать новый каталог, содержащий плагин, на каждый сайт, заменяя старый.И вызовы функций в вашем коде должны редко, если вообще изменяться.

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

0 голосов
/ 07 декабря 2013

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

0 голосов
/ 23 июня 2010

Помимо того, что это плохая практика, вы должны сначала проверить, разрешает ли include URLs , если вы действительно хотите это сделать.

Если, однако, все сайты, которым необходимо использовать сценарий, вы можете поместить сценарий где-нибудь в каталог, доступный для пользователя, который выполняет php, и добавить этот каталог в свойство php.ini include_path ( также можно сделать во время выполнения )

(Или вы можете создать расширение php и загрузить его как расширение)

0 голосов
/ 23 июня 2010

Это очень плохая практика.
На самом деле вы используете не PHP, а только HTML-код.

Включает файлы , а не URL. Это возможно для того же сервера.
Просто используйте абсолютный путь к этим файлам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...