Проблемы с настройкой моего сайта для использования специального файла php.ini для всех каталогов - PullRequest
1 голос
/ 03 сентября 2011
  • PHP 5.2.17
  • Joomla 1.6.4
  • 1 и 1 общий сервер Linux
  • php работает как cgi

Привет, я пытаюсь использовать собственный php.ini по всему сайту. Я знаю, что могу поместить файл php.ini в каждую папку, но это было бы невозможно.

Я искал в Интернете и нашел следующий метод:

1 - создайте свой собственный файл php.ini и поместите его в папку path / to / your / website / cgi-bin

2 - создать следующий файл php.cgi

#!/bin/sh
exec /usr/local/bin/php5 -c path/to/your/website/cgi-bin

3 - загрузить php.cgi в / path / to / your / website / cgi-bin

4 - chmod + x php.cgi, чтобы сделать его исполняемым

5 - включить следующую строку внутри .htaccess в корень моего сайта

Action application/x-httpd-php5 /path/to/your/website/cgi-bin/php.cgi

Насколько я понимаю, после выполнения вышеизложенного сценарии php на моем веб-сайте начнут использовать мой собственный файл php.ini вместо файла по умолчанию.

Кто-нибудь может помочь? Я потратил большую часть дня, пытаясь решить эту проблему без успеха.

Кстати, мой корень аккаунта (на уровень выше корня моего сайта) содержит файл .htaccess со следующими строками:

AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php

Спасибо.

ОБНОВЛЕНИЕ 9/2/2011 - 19: 37

попытался включить следующий оператор в .htaccess

SetEnv PHPRC /path/to/my/website/cgi-bin <- where my custom php.ini file is located.

Согласно этому сайту это должно было сработать -> http://support.premiumreseller.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=85

Но все равно ничего.

Я буду продолжать пытаться.

Любая помощь приветствуется !!!

ОБНОВЛЕНИЕ 2 - 3/3/2011 - 0:03 (ВРЕМЕННОЕ РЕШЕНИЕ)

Итак, я не смог найти решение своей проблемы. Я решил создать небольшой скрипт php для создания жестких ссылок на php.ini в каждом каталоге, где есть скрипт php.

Смотрите код ниже, если вам интересно:

<?php
define('ROOT_DIR', $_SERVER['DOCUMENT_ROOT']);
define('FILE_PHPINI', ROOT_DIR . "/cgi-bin/php.ini");
processdir(ROOT_DIR);

function processdir($path)
{
$FlagNoPHP = true;
$localPHPINI = $path . "/php.ini";
foreach ( new DirectoryIterator($path) as $file)
{
    if (!($file->isDot()))
    {
        if ($file->isDir())
        {
            processdir($path . "/" . $file);
        }
        else if ($FlagNoPHP && fnmatch("*.php*", $file))
        {
            $FlagNoPHP = false;
            if (!file_exists($localPHPINI))
            {
                link(FILE_PHPINI, $localPHPINI);
            }
        }
    }
}
if ($FlagNoPHP)
{
    if (file_exists($localPHPINI))
    {
        unlink($localPHPINI);
    }
}
}
?>

Приведенный выше код просматривает каждую директорию на моем сайте и:

1 - если есть php-скрипт и НЕТ php.ini, создается жесткая ссылка на php.ini

2 - если нет php-скрипта и есть php.ini, удаляет жесткую ссылку (выполняется в последнем if функции). Я включил это, чтобы очистить файловую систему от старых файлов php.ini.

Это сработало для меня.

Мне все еще интересно узнать ответ на мою первоначальную проблему.

Надеюсь, это кому-нибудь поможет!

1 Ответ

0 голосов
/ 10 ноября 2011

Похоже, вы идете долгий путь.Просто измените .bashrc:

export PHPRC="/Volumes/Mac_Daddy/web_curr/public_html/php_osx.ini"

Результат:

Configuration File (php.ini) Path: /usr/local/php5/lib  
Loaded Configuration File:         /Volumes/Mac_Daddy/web_curr/public_html/php_osx.ini  
Scan for additional .ini files in: /usr/local/php5/php.d  
Additional .ini files parsed:      /usr/local/php5/php.d/10-extension_dir.ini  

Или создайте псевдоним:

alias myphp="/usr/local/php5/bin/php -c /somewhere/someplace/php.ini"

или еще лучше man php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...