Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Запрет на выполнение оператора на продакшн сервере
Форумы портала PHP.SU » » Вопросы новичков » Запрет на выполнение оператора на продакшн сервере

Страниц (1): [1]
 

1. koras - 17 Июня, 2013 - 16:46:32 - перейти к сообщению
Глупый конечно вопрос ))

Но думаю, как бы мне на продашн сервере запретить выполнение только одного оператора на одном из сайтов, скажем оператора print_r

В голову приходит только такой код

PHP:
скопировать код в буфер обмена
  1.  
  2. # config.php
  3. if($_SERVER['HTTP_HOST'] =='prod.host' || $_SERVER['HTTP_HOST'] =='www.prod.host'){
  4. $developer = false;
  5. }
  6.  



PHP:
скопировать код в буфер обмена
  1.  
  2. # script.php
  3. if($developer == true){
  4. print_r($array);
  5. var_dump($value);
  6.  
  7. }
  8.  
2. DelphinPRO - 17 Июня, 2013 - 16:59:00 - перейти к сообщению
я бы не назвал такой подход правильным.
Определите переменную "mode" в конфигурационном файле.
На хостинге выставляйте ее в "production" на сервере разработки в "development"
Кроме того можно сделать отдельную конфигурацию для отладки и поместить ее скажем в подкаталог debug каталога с настройками. И при загрузке конфига проверять, если конфигурационный файл в debug присутствует, то грузить его, иначе продакшн-настройки. Это более гибко, чем привязываться в имени хоста.
3. EuGen - 17 Июня, 2013 - 17:06:20 - перейти к сообщению
Запретить - что имеется ввиду? Игнорировать запуск, либо выводить ошибку? Если второе - то глобально можно определить в php.ini, например. Но это радикальный подход, я бы не советовал.
Вообще, нужно определять сервер, исходя из конфигурационного файла (см. выше подсказку), а не исходя из имени - а уже далее, определив имя секции конфигурационного файла, определять, к какому типу (продуктовый или стейджинг) она относится.
Пример функции определения секции:
PHP:
скопировать код в буфер обмена
  1. function getSection($rgConfig, $bIsCron=false)
  2. {
  3.     $part=$bIsCron?'cron':'web';
  4.     if(!array_key_exists($part, $rgConfig))
  5.     {
  6.         return false;
  7.     }
  8.     $rgConfig   = $rgConfig[$part];
  9.     if(!array_key_exists(php_uname("n"), $rgConfig))
  10.     {
  11.         return false;
  12.     }
  13.     $rgConfig   = $rgConfig[php_uname("n")];
  14.     if(!is_array($rgConfig))
  15.     {
  16.         return $rgConfig;
  17.     }
  18.     else
  19.     {
  20.         if(PHP_OS=='WINNT')
  21.         {
  22.             return $rgConfig[dirname(realpath(__FILE__))];
  23.         }
  24.         else
  25.         {
  26.             return $rgConfig[fileinode(dirname(realpath(__FILE__)))];
  27.         }
  28.     }
  29. }

- в данном случае есть ещё проверка, какое окружение используется - веб (фронденд) или крон (бэкенд). В $rgConfig содержится информация по секциям и серверам.

 

Powered by ExBB FM 1.0 RC1