PHP Fatal Ошибка Не удалось открыть файл

Я получаю следующую ошибку от 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"); 

Да, глупая скобка отсутствовала, но в этой строке моего скрипта не было сгенерированной ошибки, что было странно для меня