Что я хочу сделать, это включить 'file1.php' из 'domain1' в 'file2.php' в 'domain2'. Так что я полагал, что я должен сделать что-то вроде этого:Как включить файл вне корневого документа?
file2.php
require_once '/var/www/vhosts/domain1/httpdocs/file1.php';
Но это не будет работать по причинам, я не могу по-настоящему понять. Так что я сделал, это добавить свой путь к пути include. Что-то вроде:
file2.php
set_include_path(get_include_path() . PATH_SEPARATOR . "/var/www/vhosts/domain1/httpdocs");
require_once 'file1.php';
Так что, пожалуйста, дайте мне несколько советов о том, где я делаю неправильно?
Благодаря
UPDATE - В любом случае я получаю следующее сообщение об ошибке:
Fatal error: require() [function.require]: Failed opening required '/var/www/vhosts/domain1/httpdocs/file1.php' (include_path='.:/php/includes:/usr/share/pear/') in /var/www/vhosts/domain2/httpdocs/file2.php on line 4
Кроме того, я пытался это как с safe_mode On и Off.
UPDATE2: Также я изменил разрешения на 777 в своем тестовом файле, и я дважды проверил пути к include-файлу в bash.
РЕШЕНИЕ: Мне удалось решить эту тайну! Моя хостинговая компания использует Plesk для управления доменами и т. Д. Также уровень сообщений об ошибках в php.ini не был E_ALL. Когда я устанавливаю сообщения об ошибках, чтобы E_ALL я получил предупреждение о том:
Warning: require() [function.require]: open_basedir restriction in effect.
Так что я пошел в /var/www/vhosts/domain2/conf/httpd.include и редактируются путь open_basedir. Обратите внимание, что это не долговечное решение, так как этот файл конфигурации перезаписывается plesk каждый раз при изменении конфигурации домена. То, что вы должны сделать, это изменить (или создать) файл «vhost.conf» в том же каталоге, а затем запустить:
/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=DOMAIN.TLD
Это должно изменить настройки для домена, но по какой-то странной причине он не будет работать с open_basedir. Я могу изменить другие вещи, такие как document_root, но это не изменит open_basedir, но это еще одна проблема: D
РЕШЕНИЕ ЗАКЛЮЧИТЕЛЬНО: для тех, у кого такая же проблема, это последний код, который сработал. Я просто добавил это в /var/www/vhosts/domain2/conf/vhost.conf (вы можете изменить '/ VAR/WWW/ВХосты' на '/' или что угодно):
<Directory /var/www/vhosts/DOMAIN.TLD/httpdocs>
<IfModule mod_php5.c>
php_admin_flag engine on
php_admin_flag safe_mode off
php_admin_value open_basedir "/var/www/vhosts"
</IfModule>
Options -Includes -ExecCGI
</Directory>
Спасибо все ребята!
«не будет работать» не поможет нам определить проблему. Что происходит? Какие ошибки сообщаются (в том числе в журналах сервера)? – Quentin
Повторите свое обновление, это похоже на то, что файл не существует или права установлены неправильно. Вы на 1000% уверены, что он существует? Кому он принадлежит (пользователь/группа)? Какой пользователь выполняет PHP? –
Как я могу проверить, какой пользователь использует PHP? – Brayn