0

I have about 150 websites each on its own Apache virtual host running php7 on ubuntu 16. Each site has a config.php in the root dir with constants in it: define('MYVAR','myval');

I want to make a new constant that I will have to update every 2 months or so. I don't want to open each config and edit them. How can I have each site/virtual host be aware of this constant I want to set. I want to be available everywhere just like $_SERVER['REMOTE_ADDRESS']; is.

I do not want to create a file them symlink it to each site, thats messy. I would like to edit the apache config or edit a php config someplace to have a define() in it.

Is this possibe? or am I stuck sym linking a file or editing all my configs?

Brént Russęll
  • 756
  • 6
  • 17
  • 1
    Have you ever searched this? check [PHP: possible to set constants in default php.ini file](http://stackoverflow.com/questions/10751688/php-possible-to-set-constants-in-default-php-ini-file) and [Declaring global variable with php.ini](http://stackoverflow.com/questions/5052558/declaring-global-variable-with-php-ini) – bansi Jan 10 '17 at 04:48
  • Possible duplicate of [PHP: possible to set constants in default php.ini file](http://stackoverflow.com/questions/10751688/php-possible-to-set-constants-in-default-php-ini-file) – Jens Habegger Jan 10 '17 at 06:27

4 Answers4

0

I think you should try using OS environment variables. Try setting the variables and then exporting them in your .profile file.

Ideally, this is where you should store sensitive credentials too. This way, even if your code is leaked, no one can get access to your existing server (never store Database or other credentials in your code)

You can either store your system variables in .profile or .bashrc file (I would recommend .profile). You can see how to set system variables here: https://unix.stackexchange.com/a/117470/209405

You can get the variables in PHP with the help of getenv($var) or with $_ENV[$var]. For more info, you can check here: http://php.net/manual/en/function.getenv.php and http://php.net/manual/en/reserved.variables.environment.php

Community
  • 1
  • 1
Karan Shah
  • 1,304
  • 11
  • 15
0

As pointed out in this link; PHP: possible to set constants in default php.ini file

You can't just invent variables in the PHP file, you'll need to auto-prepend a config file that has all the variables defined.

Ignore Below

You could store some global variables in your php.ini file.

The single php.ini file should be used by all your Apache virtual-hosts.

If you update your php.ini file and put a variable in like

my_custom_var = ABC123

Then you can access the variable with ini_get

echo ini_get('my_custom_var');

See more details on ini_get at http://php.net/manual/en/function.ini-get.php

Community
  • 1
  • 1
sketchthat
  • 2,678
  • 2
  • 13
  • 22
0

The best non-intrusive way for me was to make sure mod_env was enabled then I added in the conf-enabled dir a conf file with the following in it

SetEnv MYLITTLEVAR thestringIwant

Then in php I can get it by:

print $_SERVER['MYLITTLEVAR'];

Tested and it works for me.

Brént Russęll
  • 756
  • 6
  • 17
0

If want to make some variables globally available in PHP you need to add those variable in the apache config file.

if you're using ubuntu open /etc/apache2/apache2.conf file, And if you're using windows open httpd.conf. And add the following line.

SetEnv VARIABLE_NAME 'whatever value you want'

Mahendra Pratap
  • 3,174
  • 5
  • 23
  • 45