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

17 ответов


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

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

sudo chmod -R 755 ~/Sites

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

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

подробнее здесь: linuxquestions.org/questions/linux-server-73/


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

chmod 755 index.php

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


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

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

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


в моем сознании истинный путь:

# 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 {} \;

вот некоторые руководства, как это исправить. Перейти к:

cd /var/www

sudo chown www-data:www-data * -R

sudo usermod -a -G www-data username

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


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


это проблема блокировки 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'

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


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

cd/var / www
sudo chown www-data: www-data * - R
sudo usermod-a-G www-имя пользователя


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

setsebool-P httpd_read_user_content 1


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


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


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

чтобы изменить настройки разрешений файлов на mac: щелкните правой кнопкой мыши на конкретном файле и нажмите "Получить информацию" в раскрывающемся меню и обратитесь к разделу " общий доступ и разрешения панель и изменение настроек привилегий в Read & Write

больше: http://www.itoctopus.com/warning-unknown-failed-to-open-stream-permission-denied-in-unknown-on-line-0-error-in-joomla


Проверьте формат файлов 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

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

cd htdocs

выполнить

chmod -R 755 sites

нет необходимости судо !


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

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

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

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

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

User: name="_www"
Group: name="_www"