Назад | Перейти на главную страницу

выполнить cgi-скрипт из каталога, который является символической ссылкой

У меня есть сценарий, доступный через Apache, который изменяет родительский каталог. Фу. mybin / a.pl, который изменяет каталог ../data/. Я хотел бы создать различные псевдонимы, например. localhost / www / mybin / a.pl localhost / zzz / mybin / a.pl, который изменяет разные каталоги, такие как www / data и zzz / data. Я хотел бы сохранить одну версию mybin. Я попытался создать символические ссылки www / mybin и zzz / mybin, указывающие на один каталог (main / mybin). Проблема в том, что apache разрешает символические ссылки и запускает сценарий в main / mybin независимо от пути. Можно ли настроить apache так, чтобы мой скрипт вызывался из символьной ссылки?

Я не думаю, что ответ можно найти в Apache, а скорее в самом CGI. Apache будет следовать символическим ссылкам при условии, что владелец тот же, который сказал, что я посмотрю на ваш сценарий CGI, который вы не предоставили.

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

Когда я пытаюсь сделать что-то подобное, я обычно использую SCRIPT_FILENAME Переменная среды CGI, которую передает Apache. Это должен быть путь, который был вызван, который будет местоположением символической ссылки. Этот путь будет абсолютным путем от /. Это будет имя сценария CGI, поэтому вы можете удалить его, а затем добавить ../data или получите имя базового каталога из информации о пути, чтобы определить правильный каталог данных.

Вы можете заставить Apache не переходить по символическим ссылкам с помощью Options -FollowSymLinks в нужном каталоге.