php fopen не может открыть файл для записи в Mac OS X - PullRequest
2 голосов
/ 01 мая 2011

Я запускаю скрипт php updreading.php локально на своем ноутбуке (с Mac OS X 10.6.7). Вот содержимое файла updreading.php

<?php
    $outFile = "examples-output.txt";
    $out = fopen($outFile, 'w') or die("can't open write file");
?>

Когда я запускаю его, я получаю сообщение об ошибке «Не удается открыть файл записи». Я думаю, что это должно быть как-то связано с разрешениями. Я (arman) сделал себя владельцем / Library / WebServer / Documents / с правами «Чтение и запись» и «применял настройки к вложенным элементам». Мой скрипт и файл, в который я пишу (examples-output.txt), находится в / Library / WebServer / Documents / wabun /. Вот разрешения для файлов в / Library / WebServer / Documents / wabun /:

-rw-r--r--@ 1 arman  admin         0 May  1 01:03 examples-output.txt
-rw-r--r--@ 1 arman  staff      1657 May  1 01:04 updreading.php

Я пытался решить проблему в течение последних 4 часов, пытаясь получить разные разрешения без удачи. Есть идеи, как решить эту проблему, ребята? Спасибо!

Ответы [ 3 ]

7 голосов
/ 28 декабря 2011

У меня была точно такая же проблема.Я должен был убедиться, что разрешения были правильными для всех папок parent .Например, если (в OSX) попытаться записать в каталог ~/foo/bar/baz, я решил это с помощью команды chmod -R 777 ~/foo.

1 голос
/ 01 мая 2011

Бьюсь об заклад, проблема в том, что ваш веб-сервер или экземпляр PHP не работают под тем же пользователем (arman), вы можете проверить это с помощью функции get_current_user().Вы можете либо настроить apache для работы с вашими привилегиями (спросите в ServerFault), либо дать папке более щедрые разрешения, например 0777.

Еще одна вещь: вы уверены, что $outFile соответствует абсолютному путь?Попробуйте сделать:

var_dump(is_file($outfile));
0 голосов
/ 01 мая 2011

вам нужно сделать apache (при условии, что apache - это сервер, который вы используете) владельцем или поместить в группу (и предоставить доступ для записи группы) или дать доступ на запись всем или т. Д. IOW apache - это тот, кто фактически выполняет скрипт, не вы.

...