Sleep(0)
уже обсуждалось здесь .
Поскольку ваш процессор ничего не будет делать (23%), эта функция немедленно вернет . Попробуйте заменить его на что-то вроде Sleep(value)
(значение в миллисекундах), чтобы фактически уменьшить использование вашего процессора.
Вы не можете выполнить это, если действует open_basedir
, что не позволяет PHP перемещаться из домашнего каталога.
Что вы можете сделать, это убедиться, что docroot1 и docroot2 принадлежат пользователям в одной и той же группе, соответственно установить права доступа к группе и использовать символическую ссылку от docroot2 к docroot1 для чтения другого корня сети.
Или пересоберите PHP и пусть он просто следует типичным * nix-разрешениям, как и любой другой процесс:)
Вы можете включать файлы из любого места, если только разрешения вашего PHP-скрипта или безопасный режим не препятствуют этому. Ваш первый подход совершенно нормален. Какие ошибки вы получаете?
Что касается комментариев, то они, похоже, подтверждают, что нет доступа из PHP к файлу, который определенно существует. Что касается того, что это может быть, Suhosin был исключен, единственное, о чем я могу думать, это PHP или Apache, которые являются своего рода chroot Jail:
Основное преимущество chroot jail в том, что jail ограничивает часть файловой системы, которую может видеть демон, корневым каталогом jail. Кроме того, поскольку jail должен поддерживать только Apache, программы, доступные в jail, могут быть крайне ограничены. Самое главное, нет необходимости в программах setuid-root, которые могут быть использованы для получения root-доступа и выхода из тюрьмы.
Я никогда не работал ни с чем подобным, поэтому не могу сказать, как это обнаружить (кроме как сделать glob()
на /var/www/vhosts
и посмотреть, что появится. Но я думаю, что это должно быть настроено администратором. Кто управляет вашей машиной?
то, что вы используете, - плохая практика. поместите зависимый код в специфичный для домена. Дублирование одного и того же кода - правильный подход, поскольку это не влияет на работу обоих сайтов.
Попробуйте создать символическую ссылку для file1.php и включить ее, как если бы она была из локального каталога.
также убедитесь, что в .htaccess для параметра followsymlink установлено значение true
как насчет того, чтобы попробовать это в вашем file2.php в domain2?
require_once '../../../domain1/httpdocs/file1 .php ';
Попробуйте выполнить chmod 777 на тестовом файле php, чтобы проверить, работает ли он, есть ли у вас проблемы с разрешениями. Также выполните простую phpinfo () и посмотрите, включен ли режим сохранения.
Что произойдет, если вы попытаетесь потребовать другой файл:
// test.php
<?php
echo 'Hello World';
?>
// your file
require_once('test.php');
Это работает? Если да, поместите test.php в другое место и попробуйте снова. Работает ли он по-прежнему?
.Я сижу здесь и гадаю, почему Вы не сделали символическую ссылку. Или я что-то пропустил? Вы можете сделать символическую ссылку на папку с необходимыми включениями на путь, к которому у вас есть доступ.
Это работает на паре машин, которыми я управляю
ini_set("include_path",".:/hsphere/local/home/user_name/other_domain.com");
require "filename.php";