Это сводит меня с ума. httpd работает как пользователь apache. У меня есть две директории в / var / www / html – загрузка и фото. У обоих есть группа: владелец apache: apache. Оба являются 755. uploads доступен для записи из php-фотографий.
Некоторые тестовые коды:
var_dump(touch('/var/www/html/photos/_test.log')); var_dump(touch('/var/www/html/uploads/_test.log')); var_dump(touch('/var/www/html/uploadsasdf/_test.log'));
И результаты:
Warning: touch(): Unable to create file /var/www/html/photos/_test.log because Permission denied in /var/www/html/test.php on line 2 bool(false) bool(true) Warning: touch(): Unable to create file /var/www/html/uploadsasdf/_test.log because Permission denied in /var/www/html/test.php on line 4 bool(false)
Я подтвердил разрешения через интерфейс оболочки и GUI. Я chowned и chmoded все снова только, чтобы быть уверенным. Я переименовал каталог uploads в нечто другое и переименовал фотографии для загрузки, чтобы узнать, является ли здесь имя каталога ключевым, но это не так. Это сама директория. Переименованные закачки по-прежнему работают с новым именем, а каталог фотографий, который теперь называется «uploads», не работает.
Следует отметить, что _test.log не существует в папках перед тестированием, поэтому не похоже, что у этого файла есть плохие разрешения или что-то еще.
Интересно, что если я создаю новый каталог, отнесите его к apache: apache, chmod it to 777, я не могу писать на него, поэтому здесь может быть что-то большее; но остается вопрос: почему же работает каталог uploads?
Кто-нибудь видел это поведение раньше? Мне что-то не хватает?
Заранее благодарю за любую помощь!
Отредактировано для добавления дополнительной информации:
exec('whoami')
«Апач»
var_dump(posix_getpwuid(fileowner('/var/www/html/'))); var_dump(posix_getpwuid(fileowner('/var/www/html/uploads/'))); var_dump(posix_getpwuid(fileowner('/var/www/html/photos/')));
все "apache"
Все они имеют одинаковое значение fileperms (). Однако is_writable () является ложным для всех, кроме «uploads».
mkdir('var/www/html/test');
Предупреждение: mkdir (): разрешение отклонено
ls-alF drwxr-xr-x. 2 apache apache 286720 Nov 22 15:17 photos/ drwxr-xr-x. 2 apache apache 81920 Nov 22 12:06 uploads/ drwxr-xr-x. 2 apache apache 6 Nov 22 10:31 uploadsasdf/
Я вызвал clearstatcache (); Я перезагрузил сервер. Что … на … Земле?