프로그램/php2014. 8. 8. 14:29

php 설치 이후 phpopenssl을 연동을 하기 위해서 php 설치 사용한 소스 디렉토리내에 있는 openssl 모듈 디렉토리로(ext/모듈) 이동한다.

참고> 다른 모듈도 이 방식으로 추가할 수 있다.

 

 

]# cd /usr/local/src/apm/php-5.4.2/ext/openssl/

]# ll

 

 

 

 

]# cp config0.m4 config.m4

참고> config.m4가 있다면 생략

]# ll

 

 

 

 

 

phpize를 실행한다. (해당위치에 없다면 find / -name phpize를 실행해서 찾는다.)

]# /usr/local/php/bin/phpize

참고>phpize를 실행하면 configure 파일이 생성된다.

- Cannot find autoconf 오류가 발생했다면... 자세히>

 

 

 

 

 

]# ./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config

 

 

 

 

 

 

]# make

 

 

 

php openssl 연동

]# mkdir /usr/local/php/modules

]# cp modules/openssl.so /usr/local/php/modules/

]# vi /usr/local/apache/conf/php.ini

extension_dir = “/usr/local/php/modules” <- 변경

extension=openssl.so <- 추가

 

 

apache를 재 시작한다.

]# service httpd restart 



phpinfo()를 이용해서 openssl이 활성화되었는지 확인한다.


Posted by 은둔고수
프로그램/php2014. 8. 8. 13:38

php를 설치하기 전에 openssl설치가 되어있는지 확인한다.

openssl 설치 확인

linux yum을 이용한 openssl 설치

 

 

php 설치 configure 옵션에 –with-openssl을 사용한다.

]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs --disable-debug --with-iconv --with-gd --with-jpeg-dir --with-png-dir --with-libxml-dir --with-freetype-dir --with-zlib-dir --with-config-file-path=/usr/local/apache/conf --enable-sockets --with-openssl --with-mcrypt

 

 

 

php 설치를 진행한다.

 

 

php openssl 연동을 확인한다.

Posted by 은둔고수
프로그램/php2014. 8. 6. 15:41

phpmailer를 이용한 메일을 전송할 때

SMTP Error: Could not connect to SMTP host.

라는 error가 발생했다면

 

메일 오류를 확인하기 위해 디버그를 활성화 시킨다.

$mail->SMTPDebug = 1;

 

 

오류 내용>

SMTP -> ERROR: Failed to connect to server: Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP? (286127862)
SMTP Error: Could not connect to SMTP host.

 

 

- ssl 관련 오류로 openssl이 정상으로 작동하는지 확인을 한다.

 

openssl 설치 확인

openssl 버전 확인

phpinfo() 이용한 확인 

 

 

방법>

php와 openssl을 연동한다.

 

 

 

더보기>

- linux openssl 설치, 버전, php openssl 연동 확인

- php openssl 모듈 추가 연동 - php 재 컴파일없이 php 설치 소스를 이용한 방식

php 재파일을 이용한 openssl, mcrypt 모듈 추가, configure 옵션 추가

Posted by 은둔고수
프로그램/php2014. 7. 9. 15:31

오류>PHP Fatal error:  Directive 'magic_quotes_gpc' is no longer available in PHP in Unknown on line 0

 

 

발생>php (shell)을 실행할 때 발생

>

]# php -i

 

 

   

 

 

>php.ini 파일 내용 중 magic_quotes_qpc = On Off로 변경을 한 후 httpd 데몬을 재 시작을 한다.

]# vi /usr/local/apache/conf/php.ini

 

 

 

 

apache를 재 시작한다.

]# service httpd restart

php를 실행해본다.(> php 버전 확인)

]# php -v

 

 

 

더보기>
- bash: /usr/bin/php: 그런 파일이나 디렉토리가 없음

Posted by 은둔고수
프로그램/php2014. 7. 9. 15:20

오류 내용>

-bash: /usr/bin/php: 그런 파일이나 디렉토리가 없음

 

발생>

php (shell)을 실행할 때 발생

>

]# phpi 

 

 

방법>

php 실행 파일이 /usr/bin있는지 확인해보고 없다면 php가 설치되어있는 곳으로 심볼릭 링크를 건다.

php가 설치되어 있는 곳 알아내기

]# whereis php

php: /usr/local/php

 

 

 

php가 설치되어있는 곳의 php 실행(또는 모든) 파일에 대해 심볼릭 링크를 건다.

]# cd /usr/bin

]# ln -s /usr/local/php/bin/php /usr/bin/

또는 모든 파일에 대해 심볼릭 링크 걸기

]# ln -s /usr/local/php/bin/* /usr/bin/

심볼릭 링크가 만들어졌는지 확인한다.

]# ll /usr/bin/ph*

]# whereis php

 

 

 

 

 

더보기> 

- PHP Fatal error:  Directive 'magic_quotes_gpc' is no longer available in PHP in Unknown on line 0

Posted by 은둔고수
프로그램/php2014. 4. 23. 13:00

버블소트(bubble sort)란?

정렬하는 방식이 마치 물에서 거품(버블:Bubble)들이 움직이는 것과 비슷하다고 해서 붙여진 이름

 

[PHP로 구현하기]

$array = array(3, 0, 2, 1, 4, 5, -1);
$size = sizeof($array);

for($x = 0; $x < $size; $x++){
    for($y = 0; $y < $size; $y++){
        if($array[$x] < $array[$y]){
            $tmp = $array[$x];
            $array[$x] = $array[$y];
            $array[$y] = $tmp;
           }
    }
}

print_r($array);

 

[결과]

Array ( [0] => -1 [1] => 0 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 )

 

 

[PHP 내장함수 사용하기] sort()

sort($array);

print_r($array);

 

[결과]

Array ( [0] => -1 [1] => 0 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 )

Posted by 은둔고수
프로그램/php2014. 4. 22. 10:48

/* 배열 확인
배열인지 첫 번째 배열 값이 있는지 확인한다.
$ary : 배열
// true
$ary = array(0);
$ary = array('val');
$ary = array('key'=>'a');
// false
$ary = array();
$ary = array('');
$ary = array('key'=>'');
*/

function rtn_array_check($ary){
    reset($ary);
    $c = current($ary); // 첫번째 배열 원소의 값을 반환
    if(!is_array($ary) || empty($ary) || ($c !== 0 && ($c === '' || $c === false))) return false;
    return true;

}

 

$ary = array();
echo "<br />결과 = " . rtn_array_check($ary);

 

$ary = array('');
echo "<br />결과 = " . rtn_array_check($ary);


$ary = array(1);
echo "<br />결과 = " . rtn_array_check($ary);

 

$ary = '';
echo "<br />결과 = " . rtn_array_check($ary);

 

$ary = '1';
echo "<br />결과 = " . rtn_array_check($ary);

 

[결과]

결과 =

결과 =
결과 = 1
결과 =
결과 =

 

참고>

is_array() : php 기본으로 제공하는 함수로 배열인지 확인해서 true 또는 false를 반환해준다.

empty() : php 기본 제공 함수로 값이 없으면 true, 있으면 false를 반환한다.

Posted by 은둔고수
프로그램/php2014. 4. 22. 00:03

php 배열에서 특정값과 일치하는 모든 배열 값들을 삭제

 

[소스 예]

<?

$ary_ori = array(1,2,3,4,3,5);    // 배열 값
$ary_del = array(2,5,4);    // 삭제할 값(배열)

 

foreach($ary_ori as $k => $v){
    foreach($ary_del as $v2){
        if($v == $v2){
            unset($ary_ori[$k]);
        }  
    }
}

 

print_r($ary_ori);

?>

 

[결과

Array ( [0] => 1 [2] => 3 [4] => 3 )

Posted by 은둔고수
프로그램/php2014. 4. 21. 00:04

형이 맞지 않아 위치값을 알 수 없어 발생하는 문제로 올바른 형(문자형, 숫자형, string, int, 기타 등등)으로 변환한다.

 

에러 발생 예>

<?

$link = 'okkks.tistory.com';

$i = '4';
$i = (float)$i;

echo "<br />결과 = " . $link[$i];
?>

 

[결과]

Notice: String offset cast occured in 문제가 발생한 파일 경로 on line 줄 번호

결과 : s

 

 

 

수정 예>

<?

$link = 'okkks.tistory.com';

$i = '4';
$i = intval($i);

echo "<br />결과 = " . $link[$i];
?>

 

[결과]

결과 : s

 

참고> $link{$i} 형식으로도 사용할 수 있다.

Posted by 은둔고수
프로그램/php2014. 4. 20. 21:56

값을 구하는 과정에서 전달하는 절차에 문제가 발생한 경우로 각 절차를 분리를 해야 한다.

 

에러 발생 예> 배열의 마지막 키값을 알아내기

<?

$ary_tmp = array(1,2,3,4,5,6);
$last = end(array_keys($ary_tmp));

 

echo "결과 : " . $last;

?>

[결과]

Strict Standards: Only variables should be passed by reference in 문제가 발생한 파일 경로 on line 줄 번호

결과 : 5

 

 

 

값을 구하는 절차를 분리한다.

수정 예>

<?

$ary_tmp = array(1,2,3,4,5,6);
$ary_key = array_keys($ary_tmp);

$last = end($ary_key);

 

echo "결과 : " . $last;

?>

[결과]

결과 : 5

Posted by 은둔고수