2012-01-29 9 views
1

Запуск виртуальной машины с CentOS 5.7 с типичной установкой httpd.PHP не может писать вне корня документа независимо от того, что

Я пытаюсь написать файл в папку вне /var/www/html, позволяет сказать, что в /var/somedir

  • Я somedir с правом измененных 777
  • Я chowned его апач: апач (корень: апач не сработало)
  • safe_mode PHP выключено
  • doc_root PHP пустой (т.е. doc_root =)

Я не могу использовать rename(), чтобы переместить что-то из корня doc, и я не могу использовать fwrite() для создания файла за его пределами.

Просто для проверки, I exec'd whoami из файла php и его echo'd/возвратил apache при доступе в браузере.

Я думаю, что я ударил Google около 200 поисков об этом до сих пор, и я думаю, что я все еще что-то пропустил.

+3

Вы проверили ваши настройки '' open_basedir' с помощью phpinfo() '? – rdlowrey

+1

Должны ли каталоги, ведущие к 'somedir', быть читаемыми пользователем apache? – jlb

+0

open_basedir закомментирован, так что из того, что я читал, кажется, что это не будет фактором в этом случае ??? –

ответ

-1

Оказывается, что selinux был фактически включен, хотя мой «linux guy» заверил меня, что это не так!

+0

Что-то вроде этого произошло только на днях для кого-то другого ;-) Поиск не болит ...:) http://stackoverflow.com/questions/8998743/rhel-php-writing-files-outside-var-www-html/8998776 – summea

0

Я бы никогда не рекомендовал, чтобы кто-либо показывал, как писать папку с документами. На самом деле, что меры защиты существуют для чего-то.

Вместо этого вы можете создать символическую ссылку (ЛУ) в только один или выбранные папки вы хотите. Это будет, безусловно, более элегантное решение.

С символическими ссылками вы можете предоставить доступ к любому пути, где хотите.

http://en.wikipedia.org/wiki/Symbolic_link

+0

не работает для меня, такая же проблема – kritzikratzi