#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. Ну что ж, я справился с этим, и это был лучший ответ, так что наслаждайтесь 😉