Не удалось выполнить процесс потомок xterm нет такого файла или каталога
Более общим решением проблемы использования ресурсов приложения является запуск ваших приложений в контейнере с помощью Docker. Затем вы можете запускать контейнеры с ограничениями на использование процессора и памяти, аналогичными cgroups.
вы можете попробовать sudo apt -получить установку xterm , см. эту ссылку:
Вы можете создать символическую ссылку. Контекстное меню, похоже, ищет терминал gnome -с запасным вариантом xterm. Это команда, которая исправила это для меня:
1. Проверьте путь к файлу для опечаток
или переместить то, что называется require* или же include* в свою переменную, скопируйте его, скопируйте и попробуйте получить доступ к нему из терминала:
Затем в терминале:
3. Symfony
Если вы используете Symfony и сталкиваетесь с этой ошибкой при загрузке на сервер, возможно, кэш приложения не был сброшен, либо потому, что app/cache был загружен, или этот кэш не был очищен.
2. SELinux
Если вы работаете в Security-Enhanced Linux, это может быть причиной проблемы, так как вы отказываете в доступе к файлу с сервера.
Чтобы проверить, включен ли SELinux в вашей системе запустите sestatus команда в терминале. Если команда не существует, значит, SELinux отсутствует в вашей системе. Если он существует, то он должен сказать вам, применяется ли он или нет.
Чтобы проверить, являются ли политики SELinux причиной для проблемы, вы можете попробовать отключить его временно. Однако будьте осторожны, так как это полностью отключит защиту. Не делайте этого на вашем производственном сервере.
Если у вас больше нет проблемы с выключенным SELinux, то это является основной причиной.
Чтобы решить это, вам нужно будет настроить SELinux соответственно.
Следующие типы контекста будут необходимы:
В любом случае может быть множество причин, по которым SELinux будет отказывать в доступе к файлу, в зависимости от ваших политик. Так что вам нужно будет узнать об этом. Вот руководство по настройке SELinux для веб-сервера.
3. Проверьте ваш путь включения
Другой способ включения файлов, ни относительно, ни сугубо абсолютно, — это полагаться на включить путь . Это часто имеет место для библиотек или фреймворков, таких как фреймворк Zend.
Такое включение будет выглядеть так:
В этом случае вам нужно убедиться, что папка, в которой находится «Zend», является частью пути включения.
Вы можете проверить путь включения с помощью:
Вы можете добавить в него папку с помощью:
1. Включение библиотеки с использованием пути включения
Может случиться так, что вы включите библиотеку, например Zend Framework, используя относительный или абсолютный путь. Например :
Но тогда вы все равно получаете такую же ошибку.
Это может произойти из-за того, что файл, который вы (успешно) включили, сам имеет оператор включения для другого файла, и этот второй оператор включения предполагает, что вы добавили путь этой библиотеки к пути включения.
Например, упомянутый ранее файл Zend Framework может содержать следующее:
который не является ни включением ни по относительному пути, ни по абсолютному пути. Предполагается, что каталог Zend Framework был добавлен в путь включения.
В таком случае единственное практическое решение — добавить каталог к вашему пути включения.
Похожие вопросы
Может кто-то предоставлять коды клавиши для этих ключей: Сдвиг влево Caps Lock Оставленная функциональная клавиша Управления FN код клавиши, о котором я говорю, является чем-то вроде \
Чтобы легко указать удаленные файлы для редактирования с помощью vim или emacs из оболочки, я хотел бы иметь завершение табуляции как доступное для scp. Дополнения для scp работают хорошо и быстро, если ваш . Ssh / .
Подключить удаленный vps с помощью ssh. ssh user@vps_ip Отредактируйте файл в удаленном vps с помощью vim и напишите строку текста. В обычном режиме нажмите yy, как вставить текст в мой локальный vim? И наоборот. 1.GUI.
текущем мировоззрении; P12104001; example_01_01, P12104002; example_02_01, P12104003; example_03_01, P12104004; example_04_01, я хочу иметь; , , 6
Я использую Vim и Bash бок о бок в Tmux. Мне настроили Vim для автоматического сохранения файлов, поскольку я переключаюсь между ними, но я действительно хотел бы, чтобы он сохранился автоматически, когда я переключаюсь на область Bash. Есть ли способ доб
Как inetd передает управление службе? Ниже я понимаю, что inetd прослушивает каждый порт, указанный в /etc/inetd.conf. Если клиент делает запрос к одному из портов, которые прослушивает inetd.
У меня есть строка сценария оболочки, которая выглядит следующим образом: vim file.xml -c "s/\r/\r/g" -c "set fileencoding=utf8" -c "wq" (macOS), но когда я запускаю его в другом.
Я честно не знаю, что делать дальше, даже gksu качал, но тщетно. Пожалуйста, помогите. SOS!
Прости, не понял тебя.
pkexec чтобы открыть текстовый редактор от рута
Знаю, это работает, но мне именно надо зайти в папку и удалить ненужный файл. Открыть как root не выходит - gksudo не существует, а когда хочу зайти через pkexec - permission denied.
sudo ls -all /путь
Разве не работает?
sudo: cd: command not found
Тролль ? Нет команды так поставть и настрой. В вики арча в поисковую строку забить sudo хватит ума? Ну или просто su используй
Спасибо, последние две команды работают - всё получилось!) Спасибо большое!
Нет, там реально по дефолту он так не запускается.
sudo cd /путь не переходит в каталог?
Я про pkexec pcmanfm . Наверное не на тот коммент посмотрел.
Объясните мне, пожалуйста, как эту идиотскую программу установить, чтобы не выдавало постоянно ошибку ….. 3 дня пытаюсь это сделать все время что-то не так… у Вас есть рабочая версия этой программы или точная инструкция…. Please. ….
sudo cd /путь не переходит в каталог?
А должен? Откуда sudo знает что-то про bultin?
Я поискал информацию об этой программе. Оказывается, её удалили из пакета xdg-utils.
Но я думаю, что эта программа вам не нужна. Она всего лишь позволяет автоматически определить, что именно запустить: kdesu, gksu, и так далее. Достаточно только узнать самому, что именно используется, чтобы использовать именно это.
ZenitharChampion ★★★★★ ( 19.04.21 05:40:36 )
Последнее исправление: ZenitharChampion 19.04.21 05:40:54 (всего исправлений: 1)
Честно говоря, выучил ее название только когда на форумах поднялся шум из-за ее отсутствия. И до того момента прекрасно без нее обходился, и после. Сейчас вот пишу из LXDE, а не знаю, есть она или нет, есть какая-то вместо нее или нет.
…укусить себя за *опу. Вот как укусишь, появится мысль, что не стоило этого делать.
Установил HTOP, для него создался значок, запуская его пишется «не удалось выполнить, потомок-xterm (нет такого файла или каталога)», в некоторых других местах встречал аналогичные проблемы, ещё к примеру не могу запустить nautilus в терминале по нажатию ничего непроисходит. В системе стоит urxvt, он же вроде и назначен по умолчанию, я новичок в линуксе, может быть вы мне подскажете как решить эти проблемы?
самое простое - открой любой терминал, который у тебя открывается, и напиши там руками слово htop
Это мне и так понятно, но меня интересует решение проблемы т.к. терминал в наутилусе я всё равно я открыть не могу, да и не рабочая функция в система вместе со значком как-то не очень.
он же вроде и назначен по умолчанию
DE какое? Вот в нём и ищи, где там ставится терминал по умолчанию.
в десктоп-файле (ярлыке) пропиши нужный эмулятор терминала (gnome-terminal -e htop, например)
amorpher ★★★★★ ( 22.07.16 13:23:04 )
Последнее исправление: amorpher 22.07.16 13:26:27 (всего исправлений: 2)
в десктоп-файле (ярлыке) пропиши ему нужный эмулятор терминала (gnome-terminal - top, например)
Да Terminal=True там, без указания терминала. Ему надо просто в DE, или что там у него, назначить терминал по умолчанию.
Да, я уже у себя посмотрел на компе. В кедах установка терминала по умолчанию помогает.
Ему надо просто в DE, или что там у него, назначить терминал по умолчанию.
можно и так, но не в каждом дистрибутиве есть линки в том же /usr/bin на xterm как в данном случае, а сборщик дистрибутивного пакета htop криворукий или ТС ставит хз что и откуда
зато точно будет работать
лично я такие значки удаляю и забываю о них навсегда
а программы запускаю по имени из alt+f2
олсо, если у программы нет имени - его можно сделать. В домашней директории сделать каталог bin, добавить его в PATH (в /etc/profile и перезагрузиться), и кидать туда скрипты запуска на баше
возможно, все такие проблемы как-то решаются, но за годы пердолинга с DE я пришел к выводу, что всё это того не стоит
У меня гном, в глобальной переменной вроде указано то что нужно. TERM=rxvt-unicode-256color
меня интересует решение проблемы т.к. терминал в наутилусе я всё равно я открыть не могу
В наутилусе открывать терминал можно, для этого, ЕМНИП, специальное расширение есть. Но как это связано с htop?
С тем что это расширение не работает т.к. ссылается на xterm
У меня гном, в глобальной переменной вроде указано то что нужно. TERM=rxvt-unicode-256color
Ну вот, вероятно, гному плевать на твои переменные. Это гном-вей. Наверняка эта настройка запрятана глубоко в РЕЕСТРЕ. Enjoy
Psych218 ★★★★★ ( 22.07.16 13:42:40 )
Последнее исправление: Psych218 22.07.16 13:43:25 (всего исправлений: 1)
Я находил это, но это у меня пишет «update-alternatives: command not found», у меня арч. Также в реестре гнома всё-же назначен urxvt.
И вообще попробуй после установки дефолтного терминала перезапустить DE.
В Default_applications вообще нету терминала, он настраивается в реестре где у меня стоит urxvt. В общем проблема актуальна.
Вот что пишет при нажатии Открыть в терминале «Nautilus-Open-Terminal-Message: Could not start application on terminal: Не удалось выполнить процесс-потомок «xterm» (Нет такого файла или каталога)»
он настраивается в реестре где у меня стоит urxvt
покажи как это выглядит
Ты забыл сказать дистрибутив и версию гнома, но судя по скриншоту 3й.
DEPRECATED: This key is deprecated and ignored. The default terminal is handled in GIO.
иными словами, твоя настройка терминала в реестре не используется
гном ищет x-terminal-emulator
посмотри куда показывает симлинк (или цепочка через alternatives), переделай куда нужно
readlink `which x-terminal-emulator`
bass ★★★★★ ( 23.07.16 07:58:58 )
Последнее исправление: bass 23.07.16 08:01:38 (всего исправлений: 2)
Спасибо помогло, не понимаю, для чего было убирать функционал установки стандартного терминала и заставлять людей пользоваться костылями.
Иногда операционная система ubuntu (и производные от нее, например, xubuntu) отказывается выполнять скрипт майнера или программы для разгона/даунвольтинга, выдавая ошибку выполнения дочернего процесса «Не удалось выполнить процесс потомок… (Отказано в доступе)»:
При этом запустить нужный скрипт невозможно даже с командой sudo, в том числе прописав полный путь к исполняемому файлу,так как возникает ошибка «команда не найдена»:
Ошибка «Не удалось выполнить процесс потомок» также иногда возникает из-за того, что пользователь, залогиненный в системе, по какой-то причине утратил права для работы, либо указана ссылка на каталог с кириллицей (нужно указать корректный путь к исполняемому файлу в скрипте).
Это может произойти из-за некорректного удаления или установки сторонних/непроверенных пакетов/программ, либо при неправильной конфигурации прав конкретных файлов. Часто ошибка возникает из-за наделения правами root программы, но отсутствии полномочий у текущего пользователя/группы на работу с этим приложением.
Обычно причиной является некорректная работа системы политик policykit. Из-за нарушения взаимодействия pkexec с policykit приложение не получает нужных прав при попытке запуска даже при выполнении команды sudo.
Чтобы устранить проблему, нужно правильно задать права на чтение, запись и выполнение (rwx) нужной программы/скрипта конкретному пользователю, группе (или всем).
Например, для запуска утилиты amdmemtweak можно установить права rwx для всех пользователей (параметр «a» в синтаксисе команды chmod):
После наделения пользователя необходимыми правами запуск amdmemtweak производится без ошибок.
В PHP скриптах, будь то вызов include() , require() , fopen() или их производные, такие как include_once , require_once , или даже, move_uploaded_file() часто встречается ошибка или предупреждение:
Не удалось открыть поток: нет такого файла или каталога.
Что такое хороший процесс, чтобы быстро найти причину проблемы?
4. Убедитесь, что ваш сервер имеет доступ к этому файлу
Может случиться так, что все вместе, пользователь, выполняющий процесс сервера (Apache или PHP), просто не имеет разрешения на чтение или запись в этот файл.
Чтобы проверить, под каким пользователем работает сервер, вы можете использовать posix_getpwuid :
Чтобы узнать разрешения для файла, введите в терминале следующую команду:
Похожие вопросы
Может кто-то предоставлять коды клавиши для этих ключей: Сдвиг влево Caps Lock Оставленная функциональная клавиша Управления FN код клавиши, о котором я говорю, является чем-то вроде \
Чтобы легко указать удаленные файлы для редактирования с помощью vim или emacs из оболочки, я хотел бы иметь завершение табуляции как доступное для scp. Дополнения для scp работают хорошо и быстро, если ваш . Ssh / .
Подключить удаленный vps с помощью ssh. ssh user@vps_ip Отредактируйте файл в удаленном vps с помощью vim и напишите строку текста. В обычном режиме нажмите yy, как вставить текст в мой локальный vim? И наоборот. 1.GUI.
текущем мировоззрении; P12104001; example_01_01, P12104002; example_02_01, P12104003; example_03_01, P12104004; example_04_01, я хочу иметь; , , 6
Я использую Vim и Bash бок о бок в Tmux. Мне настроили Vim для автоматического сохранения файлов, поскольку я переключаюсь между ними, но я действительно хотел бы, чтобы он сохранился автоматически, когда я переключаюсь на область Bash. Есть ли способ доб
Как inetd передает управление службе? Ниже я понимаю, что inetd прослушивает каждый порт, указанный в /etc/inetd.conf. Если клиент делает запрос к одному из портов, которые прослушивает inetd.
У меня есть строка сценария оболочки, которая выглядит следующим образом: vim file.xml -c "s/\r/\r/g" -c "set fileencoding=utf8" -c "wq" (macOS), но когда я запускаю его в другом.
Я честно не знаю, что делать дальше, даже gksu качал, но тщетно. Пожалуйста, помогите. SOS!
Прости, не понял тебя.
pkexec чтобы открыть текстовый редактор от рута
Знаю, это работает, но мне именно надо зайти в папку и удалить ненужный файл. Открыть как root не выходит - gksudo не существует, а когда хочу зайти через pkexec - permission denied.
sudo ls -all /путь
Разве не работает?
sudo: cd: command not found
Тролль ? Нет команды так поставть и настрой. В вики арча в поисковую строку забить sudo хватит ума? Ну или просто su используй
Спасибо, последние две команды работают - всё получилось!) Спасибо большое!
Нет, там реально по дефолту он так не запускается.
sudo cd /путь не переходит в каталог?
Я про pkexec pcmanfm . Наверное не на тот коммент посмотрел.
Объясните мне, пожалуйста, как эту идиотскую программу установить, чтобы не выдавало постоянно ошибку ….. 3 дня пытаюсь это сделать все время что-то не так… у Вас есть рабочая версия этой программы или точная инструкция…. Please. ….
sudo cd /путь не переходит в каталог?
А должен? Откуда sudo знает что-то про bultin?
Я поискал информацию об этой программе. Оказывается, её удалили из пакета xdg-utils.
Но я думаю, что эта программа вам не нужна. Она всего лишь позволяет автоматически определить, что именно запустить: kdesu, gksu, и так далее. Достаточно только узнать самому, что именно используется, чтобы использовать именно это.
ZenitharChampion ★★★★★ ( 19.04.21 05:40:36 )
Последнее исправление: ZenitharChampion 19.04.21 05:40:54 (всего исправлений: 1)
Честно говоря, выучил ее название только когда на форумах поднялся шум из-за ее отсутствия. И до того момента прекрасно без нее обходился, и после. Сейчас вот пишу из LXDE, а не знаю, есть она или нет, есть какая-то вместо нее или нет.
…укусить себя за *опу. Вот как укусишь, появится мысль, что не стоило этого делать.
Установил HTOP, для него создался значок, запуская его пишется «не удалось выполнить, потомок-xterm (нет такого файла или каталога)», в некоторых других местах встречал аналогичные проблемы, ещё к примеру не могу запустить nautilus в терминале по нажатию ничего непроисходит. В системе стоит urxvt, он же вроде и назначен по умолчанию, я новичок в линуксе, может быть вы мне подскажете как решить эти проблемы?
самое простое - открой любой терминал, который у тебя открывается, и напиши там руками слово htop
Это мне и так понятно, но меня интересует решение проблемы т.к. терминал в наутилусе я всё равно я открыть не могу, да и не рабочая функция в система вместе со значком как-то не очень.
он же вроде и назначен по умолчанию
DE какое? Вот в нём и ищи, где там ставится терминал по умолчанию.
в десктоп-файле (ярлыке) пропиши нужный эмулятор терминала (gnome-terminal -e htop, например)
amorpher ★★★★★ ( 22.07.16 13:23:04 )
Последнее исправление: amorpher 22.07.16 13:26:27 (всего исправлений: 2)
в десктоп-файле (ярлыке) пропиши ему нужный эмулятор терминала (gnome-terminal - top, например)
Да Terminal=True там, без указания терминала. Ему надо просто в DE, или что там у него, назначить терминал по умолчанию.
Да, я уже у себя посмотрел на компе. В кедах установка терминала по умолчанию помогает.
Ему надо просто в DE, или что там у него, назначить терминал по умолчанию.
можно и так, но не в каждом дистрибутиве есть линки в том же /usr/bin на xterm как в данном случае, а сборщик дистрибутивного пакета htop криворукий или ТС ставит хз что и откуда
зато точно будет работать
лично я такие значки удаляю и забываю о них навсегда
а программы запускаю по имени из alt+f2
олсо, если у программы нет имени - его можно сделать. В домашней директории сделать каталог bin, добавить его в PATH (в /etc/profile и перезагрузиться), и кидать туда скрипты запуска на баше
возможно, все такие проблемы как-то решаются, но за годы пердолинга с DE я пришел к выводу, что всё это того не стоит
У меня гном, в глобальной переменной вроде указано то что нужно. TERM=rxvt-unicode-256color
меня интересует решение проблемы т.к. терминал в наутилусе я всё равно я открыть не могу
В наутилусе открывать терминал можно, для этого, ЕМНИП, специальное расширение есть. Но как это связано с htop?
С тем что это расширение не работает т.к. ссылается на xterm
У меня гном, в глобальной переменной вроде указано то что нужно. TERM=rxvt-unicode-256color
Ну вот, вероятно, гному плевать на твои переменные. Это гном-вей. Наверняка эта настройка запрятана глубоко в РЕЕСТРЕ. Enjoy
Psych218 ★★★★★ ( 22.07.16 13:42:40 )
Последнее исправление: Psych218 22.07.16 13:43:25 (всего исправлений: 1)
Я находил это, но это у меня пишет «update-alternatives: command not found», у меня арч. Также в реестре гнома всё-же назначен urxvt.
И вообще попробуй после установки дефолтного терминала перезапустить DE.
В Default_applications вообще нету терминала, он настраивается в реестре где у меня стоит urxvt. В общем проблема актуальна.
Вот что пишет при нажатии Открыть в терминале «Nautilus-Open-Terminal-Message: Could not start application on terminal: Не удалось выполнить процесс-потомок «xterm» (Нет такого файла или каталога)»
он настраивается в реестре где у меня стоит urxvt
покажи как это выглядит
Ты забыл сказать дистрибутив и версию гнома, но судя по скриншоту 3й.
DEPRECATED: This key is deprecated and ignored. The default terminal is handled in GIO.
иными словами, твоя настройка терминала в реестре не используется
гном ищет x-terminal-emulator
посмотри куда показывает симлинк (или цепочка через alternatives), переделай куда нужно
readlink `which x-terminal-emulator`
bass ★★★★★ ( 23.07.16 07:58:58 )
Последнее исправление: bass 23.07.16 08:01:38 (всего исправлений: 2)
Спасибо помогло, не понимаю, для чего было убирать функционал установки стандартного терминала и заставлять людей пользоваться костылями.
Иногда операционная система ubuntu (и производные от нее, например, xubuntu) отказывается выполнять скрипт майнера или программы для разгона/даунвольтинга, выдавая ошибку выполнения дочернего процесса «Не удалось выполнить процесс потомок… (Отказано в доступе)»:
При этом запустить нужный скрипт невозможно даже с командой sudo, в том числе прописав полный путь к исполняемому файлу,так как возникает ошибка «команда не найдена»:
Ошибка «Не удалось выполнить процесс потомок» также иногда возникает из-за того, что пользователь, залогиненный в системе, по какой-то причине утратил права для работы, либо указана ссылка на каталог с кириллицей (нужно указать корректный путь к исполняемому файлу в скрипте).
Это может произойти из-за некорректного удаления или установки сторонних/непроверенных пакетов/программ, либо при неправильной конфигурации прав конкретных файлов. Часто ошибка возникает из-за наделения правами root программы, но отсутствии полномочий у текущего пользователя/группы на работу с этим приложением.
Обычно причиной является некорректная работа системы политик policykit. Из-за нарушения взаимодействия pkexec с policykit приложение не получает нужных прав при попытке запуска даже при выполнении команды sudo.
Чтобы устранить проблему, нужно правильно задать права на чтение, запись и выполнение (rwx) нужной программы/скрипта конкретному пользователю, группе (или всем).
Например, для запуска утилиты amdmemtweak можно установить права rwx для всех пользователей (параметр «a» в синтаксисе команды chmod):
После наделения пользователя необходимыми правами запуск amdmemtweak производится без ошибок.
В PHP скриптах, будь то вызов include() , require() , fopen() или их производные, такие как include_once , require_once , или даже, move_uploaded_file() часто встречается ошибка или предупреждение:
Не удалось открыть поток: нет такого файла или каталога.
Что такое хороший процесс, чтобы быстро найти причину проблемы?
5. Проверьте настройки PHP
Если ничего из вышеперечисленного не сработало, возможно, проблема в том, что некоторые настройки PHP запрещают ему доступ к этому файлу.
Три настройки могут быть актуальны:
- Если это установлено, PHP не сможет получить доступ ни к какому файлу за пределами указанного каталога (даже через символическую ссылку).
- Тем не менее, поведение по умолчанию для него не должно быть установлено, в этом случае нет никаких ограничений
- Это можно проверить, позвонив phpinfo() или с помощью ini_get("open_basedir")
- Вы можете изменить настройку, отредактировав файл php.ini или файл httpd.conf.
- если это включено, ограничения могут применяться. Однако это было удалено в PHP 5.4. Если вы все еще используете версию, которая поддерживает обновление в безопасном режиме, до версии PHP, которая все еще поддерживается .
- это относится только к включению или открытию файлов через сетевой процесс, такой как http: // не при попытке включить файлы в локальную файловую систему
- это можно проверить с помощью ini_get("allow_url_include") и установить с ini_set("allow_url_include", "1")
Если ничего из перечисленного не позволяет диагностировать проблему, вот несколько особых ситуаций, которые могут произойти:
2. Проверьте правильность пути к файлу относительно относительного и абсолютного пути.
- если он начинается с косой черты «/», то это относится не к корню папки вашего сайта (корню документа), а к корню вашего сервера.
- например, каталог вашего сайта может быть /users/tony/htdocs
- таким образом, не относительно пути корня вашего веб-сайта или файла, в котором вы печатаете
- по этой причине всегда используйте абсолютные пути к файлам
Чтобы сделать ваш сценарий надежным на случай, если вы что-то передвигаете, и при этом генерируете абсолютный путь во время выполнения, у вас есть 2 варианта:
-
использование require __DIR__ . "/relative/path/from/current/file" , __DIR__ магическая константа возвращает каталог текущего файла.
определить SITE_ROOT константа себя:
-
в корне каталога вашего веб-сайта создайте файл, например, config.php
в config.php , записывать
в каждом файле, где вы хотите сослаться на корневую папку сайта, включите config.php , а затем используйте SITE_ROOT постоянная где угодно
Эти 2 метода также делают ваше приложение более переносимым, поскольку оно не зависит от настроек ini, таких как путь включения.
Решение
Есть много причин, по которым можно столкнуться с этой ошибкой, и, таким образом, хороший контрольный список того, что проверять первым, значительно помогает.
Давайте рассмотрим, что мы устраняем неисправности в следующей строке:
Другие решения
Чтобы добавить (действительно хороший) существующий ответ
Попросите администратора вашего сервера проконсультироваться с руководством по использованию программного обеспечения хостинга и веб-сервера, которое они используют.
Часто люди решают проблему с разрешениями, выполняя следующее (пример Linux)
Это не разумная идея, потому что файл или каталог теперь доступны для записи. Если вы являетесь владельцем сервера и являетесь единственным пользователем, то это не так уж важно, но если вы работаете в среде общего хостинга, вы только что предоставили всем доступ к своему серверу.
Что вам нужно сделать, это определить пользователей, которым требуется доступ, и предоставить доступ только тем, кому они. Как только вы знаете, каким пользователям нужен доступ, вам нужно убедиться, что
Этот пользователь владеет файлом и, возможно, родительский каталог (особенно родительский каталог, если вы хотите записать файлы). В большинстве сред общего хостинга это не будет проблемой, потому что ваш пользователь должен владеть всеми файлами под вашим корнем. Пример Linux показан ниже
Пользователь и только этот пользователь имеет доступ. В Linux хорошей практикой будет chmod 600 (только владелец может читать и писать) или chmod 644 (владелец может писать, но каждый может читать)
Мой код работал нормально на всех машинах, но только на этом начали возникать проблемы (которые раньше работали, я думаю). Использовал echo «document_root» путь для отладки, а также внимательно посмотрел на ошибку, нашел это
Предупреждение:
включают(D: /MyProjects/testproject//functions/connections.php):
не удалось открыть поток:Вы можете легко увидеть, где проблемы. Проблемы // перед функциями
Так что просто удалите накладную / из include, и она должна работать нормально. Что интересно, это поведение отличается в разных версиях. Я запускаю один и тот же код на ноутбуке, Macbook Pro и на этом ПК, пока все работало нормально. Надеюсь, это кому-нибудь поможет.
- Скопируйте файл в браузере, чтобы убедиться, что файл существует. Иногда файлы неожиданно удаляются (случилось со мной), и это также было проблемой в моем случае.
Другая возможная причина: переименование и / или перемещение файлов в текстовом редакторе. Я прошел все вышеописанные шаги безуспешно, пока не удалил файл, который продолжал выдавать эту ошибку, и создал новый, который исправил проблему.
4. Не ACSII символы внутри Zip-файла
По-видимому, эта ошибка может произойти и при вызове zip->close() когда в некоторых файлах внутри zip есть не-ASCII символы в имени файла, такие как «é».
Потенциальное решение — обернуть имя файла в utf8_decode() перед созданием целевого файла.
Кредиты для Фран кано для выявления и предложения решения этой проблемы
Читайте также: