PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Защо е необходим putenv() на вече дефинирана променлива на средата?

Причината е следната:

Стойностите на средата, които получавате от getenv()[PHP] (php функцията) са различни от средата, която заявявате с getenv()[C] (функцията C lib). Какво getenv()[PHP] прави, проверява с регистрирания sapi за съвпадение (http ://lxr.php.net/xref/PHP_5_6/ext/standard/basic_functions.c#3999 ).

Apache2 sapi прави това чрез своя собствен контекст на среда (http://lxr.php.net/xref/PHP_5_6/sapi/apache2handler/sapi_apache2.c#253 ), а не стандартната операционна среда от самия процес на apache.

САМО когато не бъде намерено съвпадение, ще се провери средата на действителния процес. Ето защо getenv()[PHP] връща стойност, но getenv()[C] не.

Сега „хакът“ също е прост:putenv()[PHP] , съхранява дадения ключ/стойност в средата на изпълнявания процес, поради което може да бъде намерен по-късно от getenv()[c] .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Извличане на броя на редовете и връщане на 0, когато няма редове

  2. Мога ли да изпълнявам на сухо/sandbox sql команди?

  3. намиране на подобни книги въз основа на закупени книги въз основа на мета ключови думи за книги

  4. Разпределени по няколко колони

  5. Използвайки psql как да изброя разширения, инсталирани в база данни?