it-roy-ru.com

PHP Предупреждение: Неизвестно: не удалось открыть поток

Я недавно отредактировал файл Apache httpd.conf для работы mod_rewrite. Я не знаю, возникла ли эта проблема из-за этого или нет, но я получаю эту проблему с того дня.
Это то, что я вижу на веб-интерфейсе, когда я запускаю программное обеспечение - 

Ошибка сервера. Сайт обнаружен ошибка при получении http: // localhost/prestashop/ . Это может быть выключен для обслуживания или настроен неправильно.

Нет конкретного файла, который вызывает это. Но я видел, что обычно небольшие программы, состоящие из 4-5 файлов php, работают нормально, а программы с большим количеством файлов (например, PrestaShop) - нет.
Я проверил логи, и это то, что я нашел.

[Wed Mar 16 19:33:39 2011] [error] [client ::1] PHP Warning:  Unknown: failed to open stream: Permission denied in Unknown on line 0
[Wed Mar 16 19:33:39 2011] [error] [client ::1] PHP Fatal error:  Unknown: Failed opening required '/var/www/html/yomig/index.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0
[Wed Mar 16 19:33:39 2011] [error] [client ::1] File does not exist: /var/www/html/favicon.ico
[Wed Mar 16 19:33:41 2011] [error] [client ::1] PHP Warning:  Unknown: failed to open stream: Permission denied in Unknown on line 0
[Wed Mar 16 19:33:41 2011] [error] [client ::1] PHP Fatal error:  Unknown: Failed opening required '/var/www/html/yomig/index.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0
61
Bibhas Debnath

Испытал ту же ошибку, для меня она была вызвана, потому что на моем Mac я изменил DocumentRoot на мой каталог сайтов пользователей.

Чтобы исправить это, я запустил рекурсивную команду, чтобы убедиться, что служба Apache имеет разрешения на чтение.

Sudo chmod -R 755 ~/Sites
126
John Magnolia

Если вы используете Fedora, убедитесь, что SELinux не мешает. Вы исправите это с помощью этой команды: 

    Sudo /sbin/restorecon -R /var/www/. 

Более подробная информация здесь: linuxquestions.org/questions/linux-server-73/

30
jamie

У меня была та же ошибка, и моя проблема была в том, что права доступа к файлам были неправильными.

chmod 755 index.php

работал на меня.

9
Mullins

На мой взгляд, верный путь это:

# add READ permission to all directories and files under your DocumentRoot
Sudo chmod +r /path/to/DocumentRoot/ -R

# add EXECUTE permission to all DIRECTORIES under your DocumentRoot
find /path/to/DocumentRoot/ -type d -exec chmod +x {} \;
4
Dexter

Я получил эту проблему, когда вставил неправильный адрес файла в .htaccess

php_value auto_prepend_file "/home/user/wrong/address/config.php"

Поэтому, если вы используете auto_prepend_file проверьте путь к файлу. Он вызывается из .htaccess, поэтому PHP не может определить файл и строку ошибки.

4
Narek

Вот несколько советов, как это исправить. Идти к :

cd /var/www

Sudo chown www-data:www-data * -R

Sudo usermod -a -G www-data username

Измените userneme с вашим именем пользователя. Я надеюсь, что это поможет.

3
user1992554

Это случилось со мной сегодня с /home/user/public_html/index.php , и решение было сделать chmod o+x /home/user, так как этот каталог должен иметь X, так как в противном случае сервер Apache не может вывести список файлов (т.е. сделать ls)

2
petka

Это проблема блокировки SELinux, Linux запретил доступ httpd. Вот решение :

# restorecon '/var/www/html/wiki/index.php'
# restorecon -R '/var/www/html/wiki/index.php'
# /sbin/restorecon '/var/www/html/wiki/index.php'
2
carlwang

В моем случае группа _www, которую использует Apache, отсутствовала в списке доступа к папке, поэтому сначала мне нужно было добавить отсутствующую группу, например так:

Sudo chown -R _www ~/path-to-folder

Измените _www на любого пользователя или группу, под которой работает Apache.

Узнайте пользователя/группу Apache, используя apachectl -S

Вывод огромен, но посмотрите в самом конце что-то вроде:

User: name="_www"
Group: name="_www"
1
AamirR

Я только что столкнулся с этой же проблемой, и в моем случае она была вызвана selinux. Отключение это решило проблему. И нет, мне не нужен selinux на моей рабочей станции, спасибо.

1
Adrian Gunawan

Просто процитируйте приведенный выше ответ пользователя user1992554 Этот вариант отлично работал для меня в Linux Mint, чтобы избавиться от предупреждения: не удалось открыть поток: отказано в разрешении

cD/VAR/WWW 
Судо чоун www-data: www-data * -R 
Sudo usermod -a -G www-data username

1
thelightings

В Fedora 25 это оказалось проблемой SE Linux, и уведомление дало это решение, которое работало для меня.

setsebool -P httpd_read_user_content 1

1
kirenpillay

Это не прямой ответ на вопрос, но у меня была та же проблема. Я установил VSFTPD на VPS-сервере Ubuntu. Я мог загружать файлы, но каждый загруженный файл не имел разрешений на выполнение (все файлы имели права «600»). Эти сообщения объясняют, что именно вам нужно сделать, чтобы настроить VSFTPD для установки прав по умолчанию для ваших файлов:

0
Duco

Это также происходит (и это особенно смущает), если вы забыли, что создали символическую ссылку Windows на другой каталог, а другой каталог не имеет соответствующих разрешений.

0
SimplGy

Проверьте DOS и Unix формат файла. Эта проблема видна на платформах Linux, если используется формат файла DOS. Используйте команду doc2unix, как показано ниже, и повторите попытку Dos2unix * .php

Это решение для проблемы ниже

Wed Nov 12 07:50:19 2014] [error] [client IP1] PHP Warning: Unknown: failed to
    open stream: Permission denied in Unknown on line 0
[Wed Nov 12 07:50:19 2014] [error] [client IP1] PHP Fatal error: Unknown: Failed
    opening required '/var/www/html/index.php' (include_path='.:/usr/share/pear:
    /usr/share/php') in Unknown on line 0
0
Shadaksharayya H A

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

Чтобы изменить настройки прав доступа к файлам на Mac: щелкните правой кнопкой мыши на конкретном файле и выберите пункт «Получить информацию» в раскрывающемся меню, перейдите на панель общего доступа и разрешений и измените настройки привилегий на «Чтение и запись»

Подробнее: http://www.itoctopus.com/warning-unknown-failed-to-open-stream-permission-denied-in-unknown-on-line-0-error-in-joomla

0
Heshantha Nadeeshan Jayawardan

Перейти в папку htdocs

cd htdocs

Execute

chmod -R 755 сайтов

Не нужно судо!

0
denis

Кроме разрешений, проблема может быть open_basedir. Если вы используете его (и я предлагаю его использовать), то проверьте настройки на VirtualHost:

 php_admin_value open_basedir <YOUR ROOT>
0
Pavel Jiri Strnad