태그 보관물: php

PHP에서 POWERSHELL SCRIPT 실행하기

환경 :  WINDOWS 2012 R2 + PHP + IIS

윈도우에서 사용하는 POWERSHELL(PS1) 스크립트를 PHP가 실행하여 해당 결과를 리턴받아 사용자에게 표시하는 기능이 필요했습니다.

일반적으로 리눅스에서는 exec(), shell_exec(), system()과 같은 함수를 사용하셔 bash script를 손쉽게 호출했고, 결과 값을 받아서 사용했었는데요.

윈도우에 해당 사항을 적용해보니 제대로 결과 값을 리턴하지 못하는 현상을 확인했습니다.

해당 스크립트 뒤에 2>&1 만 추가하면 파워쉘 실행후 파워쉘에서 결과를 리턴받아 웹에 출력이 가능합니다.

$output = shell_exec(‘powershell “get-user “testing” 2>&1“‘);

$fp = shell_exec(“$command 2>&1“);

 

출처 : http://stackoverflow.com/questions/2360228/php-to-powershell-using-shell-exec

 

 

PHP에서 간단하게 (6자리)랜덤 숫자 생성하기

PHP를 이용해 간단하게 6자리 랜덤키를 아래와 같이 생성할 수 있습니다.

rand(000000,999999);

위와 같이 할 경우 앞자리가 숫자 0인 경우 제대로 처리를 하지 못해 중간에 5자리로 표시되는 경우도 있는데요. 이럴 경우를 대비해서 숫자 0도 출력할 수 있도록 sprintf 문도 같이 사용합니다.

$rand_num = sprintf(‘%06d’,rand(000000,999999));

위와 같이 사용하면 6자리 랜덤한 숫자키를 생성할 수 있습니다.

PHPExcel 에서 줄바꿈 처리

PHPExcel 을 이용해 EXCEL 파일 생성시 줄바꿈 처리 방법.

  1. setWrapText 허용  

$objPHPExcel->getActiveSheet()->getStyle(“D1”)->getAlignment()->setWrapText(true);

 

2. 줄바꿈 문자 처리

   $lfcr = chr(10);
$group_for_excel = str_replace(‘|’,$lfcr,substr($search_info_array[8], 1));

 

중요한 건 setWrapText 허용 부분과 php에서 줄 바꿈 처리하여 EXCEL파일 생성시 줄바꿈 문자는 chr(10)을 사용한다는 것.

 

이빨빠진 array 재정렬 하기

PHP에서 ARRAY배열을 사용하다보면 잦은 unset 으로 중간에 array 이빨이 빠진 경우가 종종 있습니다.

이럴 경우 아래와 같이 설정하여 이빨빠진 배열을 재정리해줌으로써 불필요한 공간을 정리할 수 있습니다.

$var_array = array_values(array_filter($var_array));

아니면

$var_array = array_slice(array_filter($var_array),0);

PHP에서 함수에 배열 넘기기

목적 : PHP에서 함수 매개변수에 배열넘기기

배열을 그냥 만들어서 함수의 매개변수로 넘기지 제대로 값이 넘어가지 않는 현상 확인.

해결방법 : 배열을 함수에 넘기기전, serialize후 넘기고, 함수에서는 받은 값을 unserialize 후 사용

http://kr.php.net/manual/en/function.serialize.php

PHP Notice 로그 제거

PHP에서 NOTICE 에러가 표시되는 부분을 제거하려면 아래와 같이 하시면 됩니다.

 

–  php.ini 파일에 아래 항목 수정
error_reporting = E_ALL & ~E_NOTICE

NGINX + PHP spawn-fcgi 실행시 문제 255

nginx 설치후 spawn-fcgi 실행시 아래와 같은 오류가 발생하였습니다.

/etc/init.d/php_cgi start
spawn-fcgi: child exited with: 255

원인은 php-fpm 이 문제입니다.

현재 제가 쓰고있는건 php 5.2버전인데 php 5.2버전에서는 fpm을 사용하려면 php 코어를 컴파일 해야한다고합니다. php 5.3.6 버전에서는 해당 fpm이 통합되어 별도의 컴파일 없이 바로 사용이 가능합니다.

최소 php 5.3.6 이상 버전으로 업데이트하고 php_cgi를 실행해보니 정상적으로 동작하고 있습니다.

PHP에서 mongoDB 사용하기

PHP RPM 설치된 환경.


 


# pecl install mongo  로 설치하면 pecl.php.net 사이트에서 mongo관련 파일을 내려받아 컴파일 하게됨.


컴파일 완료후 /usr/lib64/php/modules/mongo.so 파일이 생성됨.


 


해당 파일을 /etc/php.ini 파일에서 아래와 같이 설정


extension=mongo.so


후에 아파치 재시작


 


phpinfo()를 통해 mongo가 제대로 로딩 되었는지 확인 후 사용

PHP5에서 domxml 사용시 오류


Fatal error
: Call to undefined function domxml_open_mem()

php5에서 domxml 사용시 일부 함수 적용이 정상적으로 안되는 경우가 있습니다.

php4에서 사용하던 일부 함수가 php5로 올라가면서 제거된 경우 이며, 이경우 아래의 사이트에서 관련된 라이브러리파일을 받아서 include 하여 처리할 수 있습니다.

“저같은 경우 domxml_open_mem()함수가 필요했었고, php5를 사용중이었습니다.
phpinfo()로 봤을때 domxml관련된 정보가 전부 enable되어 있었으나 정상적으로 동작하지 않아 검색한 결과 php5에서 제거된 함수였습니다”

http://alexandre.alapetite.fr/doc-alex/domxml-php4-php5/index.en.html