Как правильно настроить обращение к файлам на сервере в скриптах PHP? — Хабр Q&A

Как правильно настроить обращение к файлам на сервере в скриптах PHP? — Хабр Q&A Хостинг

Вступление

Работая с хостингами, обычно не сталкиваешься с файлом php.ini, к нему просто нет доступа. Правда, есть хостинг-провайдеры, которые дают частичный доступ к некоторым настройкам php.ini. Причина такого ограничения доступа вполне понятна. Как-никак php.iniфайл задающий конфигурацию PHP сервера и его неразумная правка приведет к серьезным проблемам, решать которые придется хостинг-провайдеру.

# register_globals

Некоторые скрипты требуют включения директивы register_globals. Для этого в папке скрипта или в папке домена создайте файл .htaccess и поместите в него следующую директиву:

Если файл .htaccess в нужной папке уже существует, то просто добавьте эту строку в конец. Действие этой директивы распространяется и на все подпапки.

# вопросы и ответы

Как изменить часовой пояс на сайте?

Добавьте в файл .htaccess строку с указанием нуждного часового пояса (например, Московского):

Список поддерживаемых временных зон можно узнать на сайте shhost.ru(opens new window).

Почему вместо результатов работы PHP-скрипта я вижу лишь пустую белую страницу?

Скорее всего, в процессе работы скрипта произошла ошибка, а в файле .htaccess отключен вывод ошибок на экран.
Чтобы его включить, добавьте в этот файл (обычно он находится в вашей домашней директории, папке домена или папке с вашим скриптом) строку:

Если такая строка уже есть, приведите её к уазанному выше виду.

После завершения отладки скрипта настоятельно рекомендуем снова выключить отображение ошибок.

Почему вместо результатов работы PHP-скрипта скачивается файл *index.php*?

Это значит, что у вас не подключена услуга Поддержка PHP, и обработка PHP-скриптов на вашем аккаунте не работает.
Подключить услугу можно в разделе Услуги.

Как выключить отображение ошибок PHP?

На серверах хостинга Джино по умолчанию включен вывод ошибок в PHP-скриптах в браузер.
Чтобы отключить отображение ошибок, создайте в своей домашней директории, в папке домена или в папке со скриптом файл .htaccess и добавьте в него следующую строку:

После завершения отладки скрипта рекомендуется выключать отображение ошибок.

# запуск php в режиме cgi

Запуск PHP в режиме CGI позволяет указывать свой php.ini, работать из PHP с любыми файлами на аккаунте и иметь полный доступ к файлам, созданным из PHP.

Чтобы запустить PHP режиме CGI необходимо:

# особенности работы php на джино

В работе PHP на Джино есть ряд особенностей:

#php.ini

php.ini — конфигурационный файл с большинством настроек PHP.

На сайте shhost.ru(opens new window) приведён список директив php.ini, которые вы можете использовать в файле .htaccess.

Пример:
Если вам необходимо включить функцию magic_quotes_gpc, то надо прописать директиву функции в файле .htaccess, в папке сайта или скрипта:

Для отключения буферизации вывода данных:

Для отключения глобальных переменных:

Все приведенные выше параметры прописаны через директиву php_flag, поскольку они могут принимать только бинарные значения — on/off (1/0). Если значение прописываемого параметра может быть отлично от нуля или единицы (т. е. от on или off), то следует использовать директиву php_value.

Пример:Чтобы увеличить объем загружаемого файла через скрипты, создайте файл .htaccess в папке скрипта или папке домена и поместите в него следующие директивы (вместо 15 укажите нужный размер):

На Джино PHP работает как модуль Apache, поэтому нельзя использовать пользовательский php.ini. Для использования собственного php.ini вы можете запустить PHP в режиме CGI.

Большую часть настроек можно изменить, не запуская PHP в режиме CGI. Используйте для этого файл .htaccess и через раздел УправлениеНастройки веб-сервераНастройки PHP.

Php: dirname — manual

The dirname function does not usually return a slash on the end, which might encourage you to create links using code like this:
$url = dirname($_SERVER[‘PHP_SELF’]) . ‘/somepage.php’;

However dirname returns a slash if the path you specify is the root, so $url in that case would become ‘//somepage.php’.  If you put that URL as the action on a form, for example, submitting the form will try to go to http://somepage.php.

I ran into this when I wrote a site on a url with a path, www.somehost.com/client/somepage.php, where the code above works great, but then wanted to put it on a subdomain, client.somehost.com/somepage.php, where things started breaking.

The best solution would be to create a function that generates absolute URLs and use that throughout the site, but creating a safe_dirname function (and an htaccess rewrite to fix double-slashes just in case) fixed the issue for me:

<?php
function safe_dirname($path)
{
$dirname = dirname($path);
return
$dirname == ‘/’ ? » : $dirname;
}
?>

Где искать php.ini

Найти файл не сложно.

Если вы сами собирали платформу локального сервера, то вы сами его переименовывали и сами его настраивали. Но могу предположить, что искать его нужно в директории [C:\php] (для Windows).

На ЛС Денвер php.ini находим тут: C:WebServersusrlocalphp5php.ini.

На Xampp в папке Apache/bin:

Директивы для загрузки файлов

Часто нужно дать возможность пользователю загружать свои файлы на сервер (фото, документы, музыку). Чтобы включить эту функцию нужна настройка php.ini. Введите:

Если вы, наоборот, хотите запретить загрузку файлов, введите:

Если нужно установить максимальный размер загружаемого файла (в МБ), введите:

Если нужно установить максимальное количество файлов, которое может загрузить один скрипт, введите:

Директивы для настройки использования ресурсов

Чтобы сервер не перегружался и мог нормально работать, в PHP устанавливаются ограничения для использующихся ресурсов. Иногда стандартные параметры не подходят для проекта и нужно сделать изменение php.ini.

  1. Время выполнения скрипта. По умолчанию максимальное время выполнения скрипта ― 30 секунд. Чтобы установить другое, введите:

    Где 60 ― количество секунд выполнения скрипта.

    Если указать 0, скрипт будет выполняться бесконечно.

  2. Максимальное время (в секундах), которое может потратить скрипт для обработки загружаемых данных. Для этого используйте директиву:

  3. Объём памяти для одного скрипта (в МБ). Чтобы установить максимальный размер памяти, который может использовать один скрипт, введите:

    Где 128 ― максимальный объём памяти в MБ.

  4. Максимальный объём памяти, который может использовать один скрипт во время своего выполнения. Чтобы настроить, введите:

    Где 128 ― объём памяти в МБ.

  5. Максимальное количество переменных в GET и POST. Для этого введите директиву:

    Где 1000 ― количество переменных.

  6. Максимальный размер данных, который передаётся в POST-запросе. По умолчанию выставлен параметр ― 8 МБ. Чтобы его изменить, введите:

    Где 9 ― максимальное количество МБ.

  7. Ограничение области действия PHP в системе. Можно указать папку, выше которой скрипт не может получить доступ к файловой системе:

    Где /var/www/ ― ограничивающая папка.

Директивы для обработки данных

Чтобы установить порядок регистрации переменных, введите:

Где GEPSC ― нужная вам последовательность.

Значение:

Чтобы разрешить или запретить создание переменных argv и argc на основе информации, полученной методом GET, введите:

или

Чтобы включить или отключить автоматическую обработку кавычек и апострофов в GET, POST и Cookie, введите:

или

Доступ к php.ini на локальном хостинге

На локальных серверах вы имеете полный доступ ко всем файлам системы. Файл php.ini не исключение. Вы в любой момент можете открыть файл php.ini для редактирования. Редактировать файлы сервера нужно только в текстовых блокнотах.

Доступ на виртуальном хостинге

На виртуальном хостинге вы, как правило, не имеете доступа к этому файлу, а, следовательно, не можете менять его настройки самостоятельно.

Правда есть хостинги предоставляющие частичный доступ к php.iniи эти настройки выведены на административную панель хостинга отдельным пунктом.   

Как найти данный файл

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

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

Основное правило при использовании Apache, Denver и других оболочек для виртуального сервера: вы фактически работаете с тем же Linux’ом, поэтому пути находятся стандартными для этой системы (и для самого PHP) способами, и, скорее всего, содержат соответствующие названия в именах папок.

Как посмотреть параметры php без панели joomla

Посмотреть и проверить, доступные параметры, а также их значения можно следующим образом.

  • Откройте текстовой редактор (например, Notepad ) и создайте текстовой файл, со следующим содержанием:
  • Назовите его, например, info.php;
  • Поместите созданный файл info.php в корневом каталоге сайта. Именно сайта, а не домена;
  • Установите права доступа на этот файл 644 (CHMOD 644);
  • Вызовите скрипт из своего браузера. Для этого введите в окне браузера, следующее:

Как правильно настроить обращение к файлам на сервере в скриптах php?

Пример:
1. Директории на воображаемом хостинге
корень_на_хостинге/file1.php
корень_на_хостинге/folder/file2.php
корень_на_хостинге/text.txt
2. Содержимое file1.php
<textarea><?php include $_SERVER["DOCUMENT_ROOT"]."/folder/file2.php"; ?>

3. Вопрос
Как (внутри file1.php ) внутри file2.php инклудировать text.txt, чтобы содержимое text.txt в той-или-иной папке оказывалось в каждом file1.php той же папки?
file2.php располагается в одной неизменяемой папке.
4. Пояснение к вопросу
корень_на_хостинге/folder/file2.php
корень_на_хостинге/file1.php // include folder/file2.php include text.txt
корень_на_хостинге/text.txt
корень_на_хостинге/folder2/file1.php // include ../folder/file2.php include text.txt
корень_на_хостинге/folder2/text.txt

_________________________________________________________________________________________
корень/meta.html внутри которого

<title><?php 
if (file_exists(dirname(__FILE__)."/title.txt"))
{
include dirname(__FILE__)."/title.txt";
}
?></title>
<meta name="description" content="<?php 
if (file_exists(dirname(__FILE__)."/description.txt"))
{
include dirname(__FILE__)."/description.txt";
}
?>">

корень/index.php
корень/about/index.php
корень/shop/index.php

корень/title.txt
корень/about/title.txt
корень/shop/title.txt

внутри которых:

<!DOCTYPE html>
<html>
<head>
<?php include $_SERVER["DOCUMENT_ROOT"]."/meta.html"; 
/*Хоть я инклудирую html файл, php внутри него обрабатывается на любой из index.php */?>
</head>
<body>
[SOME CONTENT]
</body>
</html>

В каждом из трех каталогов ( » / » , » /about » , » /shop «) есть по собственному файлу title.txt.

Как узнать абсолютный путь к папке или файлу сайта на хостинге

Решить эту проблему можно, написав малюсенький скрипт на PHP, который позволит нам не заблудиться. Дело в том, что все нужные нам данные уже находятся в глобальной переменной под названием $_SERVER и нам только остается вывести их на экран браузера с помощью следующего кода:

<?php
echo 'Document root: '.$_SERVER['DOCUMENT_ROOT'].'<br>';
echo 'Полный путь к скрипту и его имя: '.$_SERVER['SCRIPT_FILENAME'].'<br>';
echo 'Имя скрипта: '.$_SERVER['SCRIPT_NAME'];
?>

Image 93

Сохраните этот код в любом блокноте (Notepad рулит) с расширением PHP, ну, например, как url.php. Затем, с помощью FTP-клиента, закиньте его в корневую папку вашего сайта (это папка может называться htdocs либо public_html либо еще как-то) и в адресной строке браузера наберите адрес вашего сайта /url.php

В результате, в окне браузера вы увидите следующее:

Document root: /home/XXXXX/YYYYY
Полный путь к скрипту и его имя: /home/XXXX/YYYYY/url_path.php
Имя скрипта: /url_path.php

Как изменить параметры php

Для каждой версии PHP можно установить свои параметры. Инструкция для изменения параметров PHP подходит, только если у вас есть услуга хостинга Linux. Можно ли сменить те или иные параметры PHP на хостинге Windows, вы можете уточнить в службе техподдержки.

Чтобы изменить настройки PHP, нужно установить на файл php.ini права 600 (rw——-) или 644 (rw-r—r—) и затем внести в него изменения.

Чтобы установить права и внести изменения, следуйте инструкции для вашей хостинг-панели:

Готово, изменения вступят в силу в течение минуты.

Как установить php на хостинг

Поддержка PHP присутствует на всех тарифных планах Hosting Linux и Hosting Windows, кроме тарифов Host-Lite и Win-Lite. Если у вас один из этих тарифов, повысьте тарифный план, чтобы включить поддержку PHP.

На хостинге linux

В некоторых случаях вид строк может отличаться от указанных в примере. Чтобы корректно добавить строки, мы рекомендуем обратиться в техническую поддержку.

Готово, вы включили обработку PHP в HTML.

Настройки php.ini

Файл php.ini это текстовой файл с достаточно простым синтаксисом. Больше того, файл php.ini содержит такое количество комментариев, что их вполне достаточно для понимания роли большинства директив PHP. Посмотреть листинг php.ini можно в отдельной статье.

От автора

PHP это основной язык программирования Joomla. Аббревиатура интерпретатора PHP — “Hypertext Preprocessor (Препроцессор Гипертекста)».

Содержание:

  • Как посмотреть параметры PHP из панели Joomla;
  • Как посмотреть параметры php без входа в панель Joomla;;
  • Файл php.ini.

Посмотреть параметры php в административной панели joomla

  • Войдите в административную панель Joomla;
  • Откройте вкладку: Система→Информация о системе→PHP. Смотрим все параметры php вашего хостинга (сервера).

Причины для поиска php.ini

Изменения в php.ini для сайта производятся тогда, когда нужно расширить или снять ограничения на некоторые операции – например, объем импортируемых или экспортируемых данных. Снятие ограничений полезно, когда вы переносите сайт вместе с его содержимым с одной платформы на другую, так как настройки по умолчанию могут этому помешать. Продвинутые пользователи могут настроить здесь все, что связано с исполнением команд на языке PHP.

Расположение php.ini в ос linux разных версий и сборок

Как правильно настроить обращение к файлам на сервере в скриптах PHP? — Хабр Q&A

ОС Linux считается самой подходящей системой для регулярной работы с хостингом, сайтами на PHP и сопутствующими процессами. Если вы имеете непосредственный доступ к файловой системе сервера (являетесь его владельцем, например), то ищите php.ini по адресам /etc/, /usr/local/lib или /usr/local/php/etc/ – это самые распространенные места.

PHP Zend размещает ини файл в /usr/local/Zend/etc/, учтите это, если используете данную оболочку. Вы можете задать и обычный поиск файла в системе, но так вы не узнаете, какой из нескольких файлов php.ini реально используется в данный момент для задания настроек сервера и сайта.

Вряд ли сложным исключением станет сборка ОС на базе Ubuntu. Место, где лежит php.ini в Ubuntu, определяется через phpinfo() и зависит от того, какой именно тип сервера вы используете. Для Apache это может быть /etc/php5/apache2, например. Если файл вовсе не удается обнаружить, то его можно создать вручную или скопировать из другого места, но только если знаете примерную структуру файла.

Сканирование директорий

Существует возможность сконфигурировать PHP для сканирования директорий
в поисках .ini-файлов после считывания php.ini. Это можно сделать
на моменте компиляции, указав опцию —with-config-file-scan-dir.

Можно сканировать несколько директорий, разделяя их разделителем,
используемом в вашей операционной системе (; в Windows, NetWare
и RISC OS; : на всех остальных платформах; в PHP есть
константа PATH_SEPARATOR, которую можно использовать)

В каждой директории PHP сканирует все файлы заканчивающиеся на .ini
в алфавитном порядке. Список всех загруженных файлов в том порядке,
в котором они были загружены, доступен с помощью функции
php_ini_scanned_files(), либо при запуске PHP с опцией —ini.

Директивы для вывода ошибок

По умолчанию во время выполнения скрипта функция вывода ошибок на экран отключена. Поэтому, чтобы выводить сообщения об ошибках вместе с остальным выводом PHP-скрипта, включите опцию display_errors. Для этого введите:

В PHP есть разные виды ошибок: критические, ошибки синтаксиса и другие. Можно включить вывод только важных для вас типов ошибок. Для этого введите:

Оцените статью
Хостинги