Неправильные разрешения после загрузки файла на сервер PHP

#php

#php

Вопрос:

Я запускаю следующий код для файла, который был загружен на эту страницу через POST.

 $newname = "images/".$name.".".pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);   

//Copy the file from its temporary location to its real location.
if (file_exists("images/".$name))
    throw new Exception("images/".$name." already exists.");

move_uploaded_file($_FILES["file"]["tmp_name"], $newname);
echo "Stored in: ".$newname."<BR />";
  

Файл отображается в правильном месте на веб-сервере и имеет правильный размер. Когда я пытаюсь просмотреть его, хотя он говорит «… у вас нет правильного разрешения на доступ к местоположению файла.»

Я запускаю Windows 7, тестируя это на локальном веб-сервере Apache, и все файлы для этого сайта находятся в одной папке (за исключением того, что загруженные изображения хранятся в папке / images внутри этой папки, но я переключал их туда и обратно, и это не помогло).

Что я делаю не так и как я могу устранить эту проблему с разрешениями, чтобы я мог просматривать файлы сразу после загрузки?

Редактировать

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

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

Это не серьезная проблема, потому что веб-сервер все еще может использовать изображения, что мне действительно нужно, но я хотел бы иметь возможность просматривать их без прав администратора, чтобы немного упростить мою тестовую среду. Поэтому любые дальнейшие предложения приветствуются 🙂

Комментарии:

1. Где вы храните файлы? Возможно, у вас нет прав администратора.

2. Извините, я должен был упомянуть об этом. Это мой домашний ноутбук, и у меня есть единственная учетная запись, и это учетная запись администратора. Файлы хранятся в папке в корне моего веб-сервера Apache.

3. И как именно вы получаете доступ к этим файлам? Не имеет значения, является ли ваша учетная запись администраторской, потому что Windows по умолчанию запускается как не-администратор, и, когда эти привилегии необходимы, вам будет предложено их предоставить. (помните те модальные окна с выбором «Да» или «Нет» при запуске некоторых исполняемых файлов?)

4. Хорошо, я отредактировал вопрос, добавив немного новой информации после того, как проследил за вашими комментариями.

5. кстати, chomd работает в системах unix, а не Windows (по крайней мере, не полностью).

Ответ №1:

Попробуйте запустить:

 echo(fileperms($newname));
  

Чтобы получить восьмеричное значение настроек chmod файлов после его загрузки, например 0755

Если они установлены слишком низко, вы можете использовать:

 chmod($newname, 0755); 
  

Установить для них что-то, что позволит вам просматривать их.

Комментарии:

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