#php #linux #root #vps
#php #linux #root #vps
Вопрос:
Я запускаю Debian 7 на своем VPS, и я хочу иметь PHP-скрипт, который позволил бы мне сделать следующее:
У меня есть сервер MTA, и у меня есть файлы журналов в отдельном каталоге ( /root/mta/resources/logs
), и веб-сайт, очевидно, находится в /var/www
, как бы я мог переместить log.txt
файл из местоположения MTA в /var/www
?
Возможно ли это сделать только через PHP или .sh
также потребуется?
Комментарии:
1. linuxquestions.org/questions/linux-general-1/… Я прочитал статью, но мне кажется опасным пробовать ее, не спросив сначала совета.
2. И почему у вас это не сработало? Совет профессионала: не позволяйте сообществу отправляться на рыбалку, чтобы узнать у вас необходимую информацию.
Ответ №1:
Попробуйте создать символическую ссылку с: ln -s /root/mta/resources/logs/log.txt /var/www/log.txt
Для обеспечения безопасности вы можете добавить .htaccess
:
<Files /var/www/log.txt>
Order Allow,Deny
Deny from all
</Files>
Комментарии:
1. Я надеюсь, что вы не просто сделали этот файл журнала общедоступным.
2. Это технически отвечает на вопрос. Он также полностью игнорирует тот факт, что это в лучшем случае «не единственное, что нужно сделать», а в худшем «ужасная идея и огромный риск для безопасности».
3. @PeeHaa Здесь вопрос не в этом. Вопрос в том, как иметь возможность читать файл, который находится вне document_root? Проблема безопасности — это другой вопрос.
4. Также не возникает вопроса, как я могу нести ответственность за утечку данных моих пользователей, но вы все равно это делаете. Ваша точка зрения?
5. Да, то, что безопасность — это другой вопрос, технически верно. Однако это вопрос, который OP, возможно, не знает , нужно задать, и поэтому, по крайней мере, необходимо упомянуть, что «эй! это может быть плохой идеей! иди почитай о X»
Ответ №2:
Если вы хотите переместить файл из точки A в точку B с помощью php, просто используйте system
для выполнения соответствующую командную строку mv
или ln
. Нет необходимости во всей проверке ошибок в скрипте, на который вы ссылаетесь (в своих комментариях).
Прежде чем вы это сделаете, выясните (а), можно ли безопасно поместить этот конкретный файл журнала в корень документа, (б) действительно ли вам нужно поместить его туда (почему бы просто не получить к нему доступ там, где он находится сейчас?), и (в) будет ли это вообще работать: если вы просто переместите файл, вы можете ожидать, что сервер создаст новый.
Вероятно, вам следует спросить о том, как решить вашу реальную проблему, потому что это не похоже на решение, в котором вы должны преуспеть.
Комментарии:
1. Да, я только что прочитал о
system()
, теперь я хотел переместить его, потому что я думал, что невозможно прочитать из файла .txt, который не находится в/var/www
. Поправьте меня, если я ошибаюсь.2. Apache может читать только из корня документа, но ваш PHP-процесс обычно может достигать чего угодно. Какую проблему вы на самом деле пытаетесь решить?