Intereting Posts

Включение файла javascript вне корня doc с использованием zend framework

Я пытаюсь включить javascript-файл в файл сценария phmtl view, используя фреймворк zend. И файл javascript, и файл phtml являются частью библиотеки php и расположены за пределами корневой папки doc моего проекта. Таким образом, структура файла выглядит так:

/var/www/vhosts/project/ /var/www/vhosts/libraries/my-lib/view/viewscript.phtml /var/www/vhosts/libraries/my-lib/js/javascript.js 

/ var / www / vhosts / libraries / my-lib добавлен в пути PHP, используя set_include_path. В viewscript.phtml я использую следующую строку, чтобы включить javascript.js.

 <?php $this->headScript()->appendFile('js/javascript.js'); ?> 

По какой-то причине javascript.js не включен, даже если я укажу абсолютный путь вместо относительного пути. Вместо этого я получаю целую копию моей веб-страницы внутри тега в разделе главы. Если я поместил javascript.js в корневую папку doc / var / www / vhosts / project и изменил путь appendFile (), он будет работать нормально. Как включить javascript вне корня doc?

Основываясь на предыдущих вопросах, которые вы задавали, я думаю, что ваши каталоги являются для вас чем-то проблематичным. вот функциональный и безопасный пример или организация каталогов для Zend Framework (частичная)

 var/ www/ vhosts/ otherproject/ project/ src/ <-- maybe some project src can be here and not in your libraries htdocs/ <--- real apache document root css/ js/ var/ log/ sessions/ etc/ doc/ libraries/ Zend/ my-lib/ js/ 

Таким образом, apache documentRoot является / var / www / project / htdocs . Здесь мы можем найти файл index.php, единственный файл php, доступный для общего доступа.

В htdocs / js & htdocs / css вы можете поместить некоторые из ваших js и css-файлов проекта. И тогда у вас возникла проблема css и js-файлов ваших внешних php-библиотек, которые теперь полностью за пределами корня веб-сайта.

То, что я обычно делаю, это, как говорили другие, ссылки из внешних каталогов в каталог js внутри корня веб-сайта. Но, чтобы быть более точным и держать здесь хорошо организованными, что вы должны там делать:

  ln -s /var/www/project/libraries/my-lib/js /var/www/project/htdocs/js/my-lib ln -s /var/www/project/libraries/my-lib/css /var/www/project/htdocs/css/my-lib 

И вы должны сделать это для всех внешних библиотек, имеющих файлы, которые должны быть в корневом каталоге документа. Таким образом, базовый url для js-файлов my-lib is / js / my-lib /.

Не бойтесь использовать символические ссылки (соединения в окнах), вы даже можете хранить их в репозитории subversion. Просто проверьте, что ваша конфигурация apache позволяет использовать символические ссылки (Options + FollowSymlinks)

Путь, указанный в appendFile() относится к корню документа сайта (например, к вашей общедоступной папке). Он не будет зависеть от php include_path.

Вы можете перенести файл js в корень doc, создать в нем корневую директорию с символической ссылкой или прочитать файл с использованием php и вывести его содержимое в качестве <script> .

сформируйте свой путь, я могу сказать, что вы используете linux, чтобы использовать symlink следующим образом:

ln -s /var/www/vhosts/libraries/my-lib/ /var/www/vhosts/project/mylib/

поэтому вы можете добавлять файлы:

 <?php $this->headScript()->appendFile('/mylib/js/javascript.js'); ?> 

и тада, его сделано

Тег, который будет добавлен на страницу, является ссылкой для браузера, где нужно искать файл JavaScript.

JavaScript – это язык на стороне клиента, он работает на компьютере пользователя и интерпретируется там, поэтому пользователь должен иметь доступ к файлу, поэтому он должен находиться внутри корневого пути, так как пользователь (клиент) не должен иметь доступ к ваше приложение.

Вы можете сохранить файл PHP в корне вашего документа и использовать его для получения JS:

getJS.php (сохраняется в корне doc) :

 <?php header("Content-type: text/javascript"); include_once '/../var/www/vhosts/libraries/my-lib/js/someJSfile.js'; ?> 

Затем в вашем коде:

 <?php $this->headScript()->appendFile('getJS.php'); ?> 

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

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