Какой правильный путь включает PHP на Mac? - PullRequest
3 голосов
/ 13 марта 2010

Работает Mac OS X 10.5.8, с предустановленной PHP 5.2.11. Использование Coda 1.6.10.

Я пишу PHP-файлы, а затем предпросматриваю их из файла, а не с сервера. Это работало нормально, пока я не попробовал включить PHP. Они не работают как относительный путь, только как абсолют от корня диска.

Могу ли я использовать такие выражения, как

include_once "common / header.php";

без указания моего полного пути к файлу, например:

include_once "/ Тома / Macintosh HD / Пользователи / neil / Рабочий стол / Веб-сайт / ColoredLists_v1.0 / common / base.php";

, где ColoredLists_v1.0 - это каталог со всеми файлами веб-сайта. Я пробовал такие решения, как добавление _SERVER [DOCUMENT_ROOT] или dirname ( File ) к путям к файлам, но это не сработало, поскольку переменные не были установлены. Есть ли какой-нибудь простой способ сделать это или конфигурацию, которую я могу изменить, чтобы она по умолчанию смотрела в определенном каталоге, а не в корне диска? В настоящее время echo_include_path показывает.:

Когда я включаю эту строку в начале скрипта, она работает:

set_include_path ('/ Тома / Macintosh HD / Пользователи / neil / Рабочий стол / Веб-сайт / ColoredLists_v1.0');

Однако, если я хочу сделать это для всех своих сценариев, я не могу сделать это изменение постоянным. Даже после того, как я отредактировал Unix include_path в моем php.ini, он, похоже, не работает.

ОБНОВЛЕНИЕ: В конце концов я решил, что самый простой способ - запустить локальный сервер Apache. Он поставляется с предустановленным Mac, так что проблем там не было. Я изменил httpd.conf так, чтобы он разрешал соединения только с локального хоста, тем самым устраняя мои опасения по поводу безопасности. Конечно, это все еще открывает порт 80, но я за маршрутизатором, так что я надеюсь, что я не очень открыт. И Coda включает в себя отличные функции в «Сайтах», где я могу установить локальный URL, так что теперь он работает блестяще. Единственный недостаток - теперь, после редактирования кода, мне нужно вручную обновить предварительный просмотр.

Ответы [ 4 ]

2 голосов
/ 13 марта 2010

Вы можете попробовать этот метод.

require_once(dirname(__FILE__) . '/example.php');
0 голосов
/ 22 апреля 2011

это работает каждый раз для меня:

<?php require_once($_SERVER['DOCUMENT_ROOT'] . '/common/header.php'); ?>

0 голосов
/ 16 марта 2010

Это действительно проблема include_path. По умолчанию, похоже, .:/usr/lib/php; возможно, если бы вы запустили команду PHP из каталога, в котором находятся ваши скрипты, это было бы хорошо?

0 голосов
/ 13 марта 2010

Попробуйте

set_include_path(
    '/Volumes/Macintosh HD/Users/neil/Desktop/Website/ColoredLists_v1.0' .
    PATH_SEPARATOR . 
    get_include_path());

в общем включаемом файле

или отредактируйте php.ini и измените переменную include_path (я использую MAMP, поэтому не могу сказать вам точный путь к php.ini)

...