#php #database #localhost #resources #web-hosting
Вопрос:
Я разрабатываю PHP-скрипты на локальном хостинге, и он работает без каких-либо проблем, но когда я загружаю его на общий хост, я обнаружил разные конфигурации на хосте как простые вещи, имена файлов или папок, если они не совпадают, что приводит к ошибкам и другим вещам, связанным с базами данных.
Мой вопрос: Есть ли какой-либо способ или ресурсы, чтобы быть уверенным, что мой PHP-скрипт не столкнется с такими проблемами, потому что у меня нет контроля над собой
Комментарии:
1. Используйте файл конфигурации для вещей, которые могут меняться от хоста к хосту, как это делает большинство проектов с открытым исходным кодом. Старайтесь по возможности избегать абсолютных путей (которые включают имена пользователей) (или используйте константу, если вам так хочется).
2. не могли бы вы привести мне примеры того, что может измениться с хоста на другой
Ответ №1:
Короткий ответ: нет.
Перенос вашего приложения в производственную среду (сервер) может быть сложным процессом (обычно называемым «развертыванием»). Общие хосты действительно ограничивают ваш контроль, но большинство из них предоставляют вам достаточную гибкость для запуска «обычного» PHP-приложения. Вещи, которые вам, вероятно, понадобятся:
- Узнайте, где находится php.ini на хосте
- Сравните его с вашим локальным php.ini
- Используйте
__DIR__
магическую константу (которая всегда указывает вам каталог файла, в котором вы его написали). Используйте его для включения и копирования/удаления пути к файлу.
Если вы используете общий включаемый файл в верхней части всех ваших сценариев, то вы можете написать там следующее: define('MY_ANCHOR', dirname(__DIR__));
. (ну, обычно они называют это BASE_PATH или ROOT_PATH, но вы поняли идею). После этого вы можете использовать его для любого другого включения и пути к файлу/каталогу, как это: include( MY_ANCHOR.'/CoolThings/GimmeThis.php' );
Если вы используете index.php
и маршрутизируете все запросы через это (единственную точку входа), затем поместите эту штуку MY_ANCHOR поверх этого файла.