#php #magento #include
#php #magento #включить
Вопрос:
В один из моих phtml-файлов шаблона magento я пытаюсь включить отдельный php-файл. Когда я включаю его, я ничего не выводю, и когда я использую require вместо этого, я получаю следующую ошибку
Fatal error: require(): Failed opening required 'http://www.site.co.uk/dir/test.php'
(include_path='/home/usr/public_html/app/code/local:/home/usr/public_html/app/code/community:/home/usr/public_html/app/code/core:/home/usr/public_html/lib:.:/usr/lib/php:/usr/local/lib/php') in /home/usr/public_html/app/design/frontend/theme/edits/template/review/product/view/list.phtml on line 30
Первая строка ошибки показывает правильный URL-адрес, и когда я перехожу к нему напрямую, он работает — ему просто не нравится, когда его включают / требуют со страницы шаблона phtml.
Я попробовал следующее в файле phtml (используя baseUrl magento, абсолютный путь и относительный путь):
<?php
$root = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
require/include ($root.'dir/test.php');
?>
<?php
require/include ('http://www.site.co.uk/dir/test.php');
?>
<?php
require/include ('../../../../../../../../../dir/test.php');
?>
Комментарии:
1. Я действительно не могу придумать ни одной причины, по которой вы бы это сделали. Скажите нам, чего вы хотите достичь, и, возможно (но, скорее всего), будет гораздо лучший способ получить эти данные в вашем представлении / шаблоне.
2. Я пытаюсь интегрировать обзоры feefo в свой магазин magento. Я знаю, что они делают расширение, но, читая руководство по интеграции, это кажется довольно простым, мне просто нужно иметь возможность включать и показывать ‘test.php «страница везде, где я хочу, чтобы показывались отзывы
Ответ №1:
Вместо Mage::getBaseUrl
использования $root = Mage::getBaseDir();
Комментарии:
1. получил работу с этим
<?php require(Mage::getBaseDir().DS.'dir'.DS.'test.php');?>
2. Пожалуйста, покажите полный пример выше
Ответ №2:
require('http://....')
собирается (если он включен) выполнить полномасштабный HTTP-запрос к указанному URL. Поскольку это URL-адрес, этот веб-сервер выполнит php-скрипт и отправит вам его вывод.
Если вы пытаетесь фактически загрузить его КОД test.php
, например, необработанный неисполняемый PHP, то вы не можете использовать http-запрос. Удаленный сервер ПОНЯТИЯ не имеет, что http-запрос на самом деле от PHP и поступает из include() . Он просто слепо запустит этот скрипт и отправит результат.
Вам нужно (скажем) переименовать удаленный файл в test.txt
, чтобы веб-сервер отправил его как есть, а затем этот текст будет выполнен как PHP-код на ВАШЕМ сервере.
И что касается других путей, если ваш $root
что-то вроде:
/home/sites/example.com/html
затем запрос будет искать
/home/sites/example.com/html/dir/test.php
Есть dir
ли вложенный каталог внутри вашего сайта $root
?