Я получаю следующую ошибку от Apache
[Sat Mar 19 23:10:50 2011] [warn] mod_fcgid: stderr: PHP Неустранимая ошибка: require_once () [function.require]: Не удалось открыть запрос '/common/configs/config_templates.inc.php' (include_path = ' .: / usr / share / pear: / usr / share / php ') в /home/viapics1/public_html/common/configs/config.inc.php в строке 158
Я определенно не эксперт Apache, но файл config.inc.php & config_templates.inc.php есть. Я также попытался перейти на страницу test.html, которую я разместил в общем / configs /, поэтому я предполагаю, что никаких проблем с правами не происходит. Я также установил права на config_templates.inc.php, чтобы дать всем права на чтение, запись и выполнение. Не уверен, что делать в этот момент, я проверил, есть ли каталог / usr / share / php, и я обнаружил, что не было, но когда я сделал yum install php, он сказал, что он был последним. Идеи?
На самом деле это не вопрос, связанный с Apache. И даже не связанный с PHP. Чтобы понять tis-ошибку, вы должны различать путь виртуального сервера от пути к файловой системе.
require
оператор работал с файлами. Но нет
/common/configs/config_templates.inc.php
файл на сервере,
/home/viapics1/public_html/common/configs/config_templates.inc.php
Часть /home/viapics1/public_html
называется «Корневой /home/viapics1/public_html
», и она соединяет виртуальный мир с реальным. Если вы измените код на что-то вроде
require_once $_SERVER['DOCUMENT_ROOT'].'/common/configs/config_templates.inc.php';
он будет работать из любого файла, помещенного в любой каталог.
Если вы выполняете SELinux, вам может потребоваться предоставить разрешение httpd для чтения из / home dir, используя:
sudo setsebool httpd_read_user_content=1
Запустите php -f /common/configs/config_templates.inc.php
чтобы проверить правильность синтаксиса PHP в файле.
Эй, у меня была эта проблема, и я обнаружил, что не смотрю на папку достаточно близко:
я имел
require_once /vagrant/public/liberate/**APP**/vendor/autoload.php
Что работало:
require_once /vagrant/public/liberate/vendor/autoload.php
Было очень легко (как новичок) упустить эту очень незаметную проблему. Да, я понимаю, что проблема, связанная с проблемой, связана непосредственно с проблемой, но если вы новичок, как и я, эти вещи можно легко упустить.
FIX:
Хороший взгляд на отладку (__Dir __ '/etc/etc/etc/file.php), тогда ваша файловая система будет открыта в другом окне и сопоставьте два напрямую. Если есть даже малейшая разница, это потребует не сработает, и вышеупомянутая ошибка будет выплющена.
На всякий случай это помогает кому-то еще, я наткнулся на неясное дело об этой ошибке, вызванной прошлой ночью. В частности, я использовал метод require_once и указывал только имя файла и никакого пути, так как требуемый файл присутствовал в том же каталоге.
Я начал получать ошибку «Ошибка с открытием требуемого файла» в какой-то момент. Некоторое время, разрывая мои волосы, я, наконец, заметил сообщение о предупреждении PHP сразу над фатальной ошибкой, указав «не удалось открыть поток: Permission denied», но что более важно, сообщив мне о пути к файлу, который он пытался открытый. Затем я сфокусировался на том, что создал копию файла (с собственностью, недоступной Apache) в другом месте, которое также оказалось в пути поиска «include» PHP, и впереди папки, в которой я хотел, чтобы ее подхватили , D'о!
У меня была одна и та же проблема, я трижды проверял пути включения, я также проверял, что груша установлена, и все выглядело нормально, и я все еще получал ошибки, после нескольких часов безумного взгляда на это я понял, что в моем скрипте имел это:
include_once "../Mail.php";
вместо:
include_once ("../Mail.php");
Да, глупая скобка отсутствовала, но в этой строке моего скрипта не было сгенерированной ошибки, что было странно для меня