В PHP на OSX 10.5 fopen = Отказано в доступе - PullRequest
2 голосов
/ 22 апреля 2011

Я использую стандартную установку PHP и Apache на OSX 10.5.8, а настройки CHMOD для папки, в которой я пытаюсь открыть (заказы), равны 777, группа _WWW.

$filename = 'orders/54c9942b.txt';

if (!$handle = fopen($filename, 'w')) {
    return(false);
}

Я получаю следующее:

Warning: fopen(orders/54c9942b.txt) [function.fopen]: failed to open stream: Permission denied in /Users/New/Sites/thisisnothere/order-save.php on line 36

* Редактировать: Я проверил его на своем веб-сервере (тот, за который я плачу, а не тот, который я настроил), и он работает, как я ожидал. Это заставляет меня поверить, что это проблема с настройкой моего сервера, может быть, проблема с доступом в Apache? или PHP? Я совершенно не знаком с настройкой Apache.

Ответы [ 4 ]

1 голос
/ 22 апреля 2011

Попробуйте использовать полный путь к файловой системе в команде fopen () и посмотрите, работает ли это.Попробуйте это в другом месте, которое, как вы знаете, тоже подойдет (возможно /tmp).

0 голосов
/ 04 января 2012

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

Имеет значение, если вы сами вызываете php на консоли или если вы вызываете тот же php-файл через локальный веб-сервер.Я обнаружил, что мой mac (lion) запускает php через веб-сервер как пользователь «localaccounts».

Затем я решил проблему следующим образом:

Шаг 1: Измените группутекущий каталог и файлы, которые необходимо изменить через веб-сервер, в группу под названием «localaccounts».Например, введите следующую команду в терминале, чтобы применить ее к текущему каталогу, подкаталогу «user images» и файлу foo.sqlite.

chgrp -R localaccounts . foo.sqlite user\ images/

Шаг 2. Предоставьте членам группы разрешение на запись с помощью запятой

chmod g+w -R . foo.sqlite user\ images/

Обратите внимание, что точка означает текущий каталог.

Я пытался сделать то же самое на своем веб-хостере, но они не позволяют это таким образом.Вместо этого они посоветовали мне использовать PHP CGI.PHP будет выполняться так же, как мой доступ пользователя FTP.Я думаю, это более безопасно, но я еще не пробовал.

0 голосов
/ 22 апреля 2011

«Если вы пытаетесь запустить эту программу и у вас возникают ошибки, вы можете проверить, предоставили ли вы доступ к файлу PHP для записи информации на жесткий диск», взято с tizag.com Похоже, вам следует установить права доступа к самому файлу php, как сказал Тайлер.

0 голосов
/ 22 апреля 2011

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

...