2009-04-11 4 views
3

Я использую функцию PHP mkdir ($ path, 0777), чтобы создать новый каталог на сервере Apache (работает в Windows).PHP mkdir(), chmod() и Windows

Когда я создаю это и просматриваю папки, Windows установила каталог в качестве только для чтения. Есть ли способ изменить это, не используя exec() для cacls.exe? В документации на PHP указано, что chmod() не работает в Windows, но ничего не говорит о методе замены.

Google, похоже, немного бесполезен в этом вопросе.

EDIT: После нескольких минут общения с администраторами в моем двухбитном учебном заведении кажется, что их тестовый PHP-сервер для студентов запущен с USB-накопителя. У меня есть ощущение, что это будет что-то делать с ним пощечины голова

+0

Обратите внимание, что chmod не работает в Windows, потому что окна используют другой метод разрешений для linux. – Shard

+0

Да, я ищу способ репликации функций chmod() на windows :) – Johnno

ответ

2

Следующая:

<?php 
mkdir("foo") 
?> 

(обратите внимание, не указанный режим) не работает для меня на Win2K - это создает папку без атрибутов задавать.

Редактировать: Просто подумал - может быть, это связано с разрешениями? Попробуйте запустить приведенный выше код из командной строки & посмотреть, что происходит:

C:> c:\php\pgp.exe 
    <?php 
    mkdir("foo") 
    ?> 
    ^Z 
+0

Я нахожусь на WinXP, и это не сработало для меня. Он создает директорию с именем foo, но тег только для чтения отмечен галочкой (и тоже сглажен!) – Johnno

+0

Кроме того, я тестирую PHP-версию 5.2.4 на сервере Apache/2.2.0 (Win32). К сожалению, я не могу изменить ни одно из них. – Johnno

+0

Я использую 5.2.3, Извините, я больше не могу помочь. Я немного искал и не мог найти упоминания о проблеме - проблемы с chmod() да, но не mkdir() – 2009-04-11 12:11:12

1

Согласно документации PHP, параметр режима полностью игнорируется в Windows, (но по умолчанию 0777, так что вы не должны указывать его во всяком случае). Попробуйте не указывать режим вообще и посмотреть, что произойдет. Может быть, это что-то испортило?

+0

Это не возится с чем-то больше, чем в любом случае, так что поведение такое же, как и без параметров. – David

1

Я использую в php и cakephp для окон как mkdir («my dir name», 0777, true); он отлично работает для меня.

+0

0777 является стандартным в окнах, просто что-то другое невозможно назначить. – David