开发者

Problems configuring my site to use a custom php.ini file for all directories

开发者 https://www.devze.com 2023-04-02 07:54 出处:网络
PHP 5.2.17 joomla 1.6.4 1and1 Linux shared server php is running as cgi Hi, I am trying to use a custom php.ini throughout my website. I know I can put a php.ini file in each folder, but that would
  • PHP 5.2.17
  • joomla 1.6.4
  • 1and1 Linux shared server
  • php is running as cgi

Hi, I am trying to use a custom php.ini throughout my website. I know I can put a php.ini file in each folder, but that would not be feasible.

I searched online and found the following method:

1 - create your custom php.ini file and put it inside path/to/your/website/cgi-bin folder

2 - create the following php.cgi file

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

3 - upload php.cgi to /path/to/your/website/cgi-bin

4 - chmod +x php.cgi to make it executable

5 - include the following line inside .htaccess in my website root

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

According to my understanding, after doing the above, php scripts on my website would start using my custom php.ini file instead of the default one.

Anyone can help? I spent a better part of the day trying to resolve this issue without success.

By the way, my account root (one level above my website root) has a .htaccess file with the following lines:

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

Thank you.

UPDATE 9/2/2011 - 19:37

tried including the following statement in .htaccess

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

According to this website it should have worked -> http://support.premiumreseller.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=85

But still nothing.

I will keep trying.

Any help appreciated!!!

UPDATE 2 - 9/3/2011 - 0:03 (WORKAROUND)

So, I couldn't find a solution for my problem. I decided to create a small php script to create hard links to php.ini in each directory that has a php script.

See below the code in case you are curious:

<?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);
    }
}
}
?>

The above code looks inside each directory in my website and:

1 - if there is a php script and NO php.ini, creates a hard link to php.ini

2 - if there is NO php script and there is a php.ini, deletes the hard link (done in the last if of the function). I included this in order to clean up the filesystem of old php.ini files.

This worked for me.

I am still curious about an answer to my original problem.

I hope this helps someone!


Seems like you're taking the long way. Just modify .bashrc:

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

Result:

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  

Or create an alias:

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

or better yet man php.

0

精彩评论

暂无评论...
验证码 换一张
取 消