ReactPhysics3D 의 광선 교차 테스트

ReactPhysics3D 의 광선 교차 테스트..

#include "reactphysics3d.h"

#include <iostream>
#include <stdexcept>
#include <vector>
#include <map>
#include <sstream>
#include <iomanip>
#include <memory>
#include <algorithm>
#include <set>
#include <string>
#include <fstream>

#define GLM_ENABLE_EXPERIMENTAL
#include <glm/gtx/string_cast.hpp>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <glm/gtx/transform.hpp> 
#include <glm/gtx/quaternion.hpp>
#include <glm/gtx/normal.hpp>


// https://github.com/DanielChappuis/reactphysics3d/blob/master/test/tests/collision/TestAABB.h
using namespace reactphysics3d;


class DynamicTreeRaycastCallback : public DynamicAABBTreeRaycastCallback {

    public:

        std::vector<int> mHitNodes;

        // Called when the AABB of a leaf node is hit by a ray
        virtual decimal raycastBroadPhaseShape(int32 nodeId, const Ray& ray) override {
			printf("--hit-- %d\n", nodeId);
            mHitNodes.push_back(nodeId);
            return 1.0;
        }

        void reset() {
            mHitNodes.clear();
        }

        bool isHit(int nodeId) const {
            return std::find(mHitNodes.begin(), mHitNodes.end(), nodeId) != mHitNodes.end();
        }
};


int main(void)
{
	DynamicTreeRaycastCallback mRaycastCallback;

	DynamicAABBTree tree(MemoryManager::getBaseAllocator());

	AABB aabb;

	std::vector<glm::vec3> vertices;

	int solverId = 1;
	vertices.push_back(glm::vec3(0, -2.5, 0));
	vertices.push_back(glm::vec3(-2.5, 2.5, 0));
	vertices.push_back(glm::vec3(2.5, 2.5, 0));
	aabb = AABB::createAABBForTriangle((Vector3*)&vertices[0]);
	int objectId = tree.addObject(aabb, &solverId);
	printf("%d\n", objectId);

	solverId = 2;
	glm::vec3 points2[] = {
		glm::vec3(0, -2.5, 2), glm::vec3(-2.5, 2.5, 2), glm::vec3(2.5, 2.5, 2)
	};
	aabb = AABB::createAABBForTriangle((Vector3*)points2);
	objectId = tree.addObject(aabb, &solverId);
	printf("%d\n", objectId);
	
	solverId = 3;
	vertices.clear();
	vertices.push_back(glm::vec3(0, -2.5, 4));
	vertices.push_back(glm::vec3(-2.5, 2.5, 4));
	vertices.push_back(glm::vec3(2.5, 2.5, 4));
	aabb = AABB::createAABBForTriangle((Vector3*)&vertices[0]);
	objectId = tree.addObject(aabb, &solverId);
	printf("%d\n", objectId);


	printf("Press any key to ray hit test..\n"); fflush(stdout);
	getchar();

	Ray ray(Vector3(0, 0, 10), Vector3(0, 0, -10));

	// hit test 
	printf("Hit test..\n");
	mRaycastCallback.reset();
	tree.raycast(ray, mRaycastCallback);

	// hit test after remove
	printf("Hit test after remove..\n");
	tree.removeObject(1);
	mRaycastCallback.reset();
	tree.raycast(ray, mRaycastCallback);

#if 0
	printf("%f\n", tree.getMin().x);
	printf("%f\n", tree.getMin().y);
	printf("%f\n", tree.getMin().z);
	printf("%f\n", tree.getMax().x);
	printf("%f\n", tree.getMax().y);
	printf("%f\n", tree.getMax().z);
#endif

#if 0
	printf("%d\n", aabb.testRayIntersect(ray));
#endif

	return 0;
}
카테고리: Programming | 댓글 남기기

determining if a point is inside a polyhedron

#include <vector>
#include <cassert>
#include <iostream>
#include <cmath>

struct Vector {
  double x, y, z;

  Vector operator-(Vector p) const {
    return Vector{x - p.x, y - p.y, z - p.z};
  }

  Vector cross(Vector p) const {
    return Vector{
      y * p.z - p.y * z,
      z * p.x - p.z * x,
      x * p.y - p.x * y
    };
  }

  double dot(Vector p) const {
    return x * p.x + y * p.y + z * p.z;
  }

  double norm() const {
    return std::sqrt(x*x + y*y + z*z);
  }
};

using Point = Vector;

struct Face {
  std::vector<Point> v;

  Vector normal() const {
    assert(v.size() > 2);
    Vector dir1 = v[1] - v[0];
    Vector dir2 = v[2] - v[0];
    Vector n  = dir1.cross(dir2);
    double d = n.norm();
    return Vector{n.x / d, n.y / d, n.z / d};
  }
};

bool isInConvexPoly(Point const& p, std::vector<Face> const& fs) {
  for (Face const& f : fs) {
    Vector p2f = f.v[0] - p;         // f.v[0] is an arbitrary point on f
    double d = p2f.dot(f.normal());
    d /= p2f.norm();                 // for numeric stability

    constexpr double bound = -1e-15; // use 1e15 to exclude boundaries
    if (d < bound)
      return false;
  }

  return true;
}

int main(int argc, char* argv[]) {
  Point p;
  p.x = 0.5;
  p.y = 0.5;
  p.z = 0.5;
  /*
  p.x = 2;
  p.y = 2;
  p.z = 2;
  */

  std::vector<Face> cube{ // faces with 4 points, last point is ignored
    Face{{Point{0,0,0}, Point{1,0,0}, Point{1,0,1}, Point{0,0,1}}}, // front
    Face{{Point{0,1,0}, Point{0,1,1}, Point{1,1,1}, Point{1,1,0}}}, // back
    Face{{Point{0,0,0}, Point{0,0,1}, Point{0,1,1}, Point{0,1,0}}}, // left
    Face{{Point{1,0,0}, Point{1,1,0}, Point{1,1,1}, Point{1,0,1}}}, // right
    Face{{Point{0,0,1}, Point{1,0,1}, Point{1,1,1}, Point{0,1,1}}}, // top
    Face{{Point{0,0,0}, Point{0,1,0}, Point{1,1,0}, Point{1,0,0}}}, // bottom
  };

  std::cout << (isInConvexPoly(p, cube) ? "inside" : "outside") << std::endl;

  return 0;
}
카테고리: Programming | 댓글 남기기

OpenGL 로 계속 개발중..

OpenGL로.. 아직도 시간날때마다 CAE Pre Processing 프로그램을 개발중이다..
진전은 좀 되긴했다..
entity 선택하는 기능도 어느정도 된것 같고..
mask, unmask, transparency등등.. 몇가지 기능을 구현하였다..
물론 component, element, edge, node 등등.. 내부적으로 코드를 분리하고..
관련된 구조도 그에 맞게 구분하고 수정하였다..
현재는.. shell tri 구조만 지원..
앞으로 shell의 quad, solid의 tetra, hexa 형태의 요소도 지원해야한다..
(앞이 구만리군..)

UI는 현재 Tcl/Tk 를 붙여서 개발중이라 구린 UI를 탈피코자..
무단히 노력중이다..

툴바도 새로 만들고.. 팝업 메뉴도 새로 만들어서 사용중..
만들고 보니 좀 그럴싸하네? ㅎㅎ

카테고리: Programming | 태그: , | 댓글 남기기

Docker Engine 설치

참고: https://docs.docker.com/install/linux/docker-ce/centos/

요즘 핫한.. (요즘 이라기엔.. 2013년도에 처음 나온 기술이라..) CentOS 7 에서 docker engine 을 설치해봄. 아래는 sudo 를 통하지않고 root 계정에서 직접 설치.

$ uname -a
Linux xxx 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

CentOS를 최신으로 업데이트함.

$ yum update

기존 docker engine이 설치되어 있을경우 최신 버전의 docker engine을 설치하기위해 삭제함.

$ yum remove docker docker-client docker-client-latest docker-common docker-latest 
 docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine

docker engine을 설치하는데 필요한 종속 프로그램 설치. 이미 최신 버전이 설치되어 있을수 있음

$ yum install -y yum-utils device-mapper-persistent-data lvm2

docker engine 공식 repository 추가

$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

설치가능한 docker engine 버전 확인.. ce는 Community Edition 인데 무료버전임.

$ yum list docker-ce --showduplicates | sort -r
....
docker-ce.x86_64            3:19.03.2-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.0-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.5-3.el7                     docker-ce-stable
.....
docker-ce.x86_64            18.06.2.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.0.ce-3.el7                    docker-ce-stable
....
....
 * base: mirror.kakao.com
Available Packages

docker engine 최신 버전 설치

$ yum install docker-ce
....
---> Package container-selinux.noarch 2:2.107-1.el7_6 will be installed
---> Package containerd.io.x86_64 0:1.2.6-3.3.el7 will be installed
---> Package docker-ce-cli.x86_64 1:19.03.2-3.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==================================
 Package                         Arch                 Version                          Repository                      Size
==================================
Installing:
 docker-ce                       x86_64               3:19.03.2-3.el7                  docker-ce-stable                24 M
Installing for dependencies:
 container-selinux               noarch               2:2.107-1.el7_6                  extras                          39 k
 containerd.io                   x86_64               1.2.6-3.3.el7                    docker-ce-stable                26 M
 docker-ce-cli                   x86_64               1:19.03.2-3.el7                  docker-ce-stable                39 M

Transaction Summary
==================================
Install  1 Package (+3 Dependent packages)

Total download size: 90 M
Installed size: 368 M
Is this ok [y/d/N]: 

y눌러서 설치… 조금 기다리면 아래와 같이 설치가 완료됨.

Running transaction
  Installing : 2:container-selinux-2.107-1.el7_6.noarch  1/4 
  Installing : containerd.io-1.2.6-3.3.el7.x86_64        2/4 
  Installing : 1:docker-ce-cli-19.03.2-3.el7.x86_64      3/4 
  Installing : 3:docker-ce-19.03.2-3.el7.x86_64          4/4 
  Verifying  : 3:docker-ce-19.03.2-3.el7.x86_64          1/4 
  Verifying  : containerd.io-1.2.6-3.3.el7.x86_64        2/4 
  Verifying  : 2:container-selinux-2.107-1.el7_6.noarch  3/4 
  Verifying  : 1:docker-ce-cli-19.03.2-3.el7.x86_64      4/4 

Installed:
  docker-ce.x86_64 3:19.03.2-3.el7                                                                                          

Dependency Installed:
  container-selinux.noarch 2:2.107-1.el7_6   containerd.io.x86_64 0:1.2.6-3.3.el7   docker-ce-cli.x86_64 1:19.03.2-3.el7  

Complete!

참고로 특정 버전의 docker engine을 설치하고자 한다면 아래와 같이..

$ yum install docker-ce-18.09.0

자 이제.. docker engine 서비스를 실행하고..

$ systemctl start docker

다음 docker version 을 확인함.

$ docker version
Client: Docker Engine - Community
 Version:           19.03.2
 API version:       1.40
 Go version:        go1.12.8
 Git commit:        6a30dfc
 Built:             Thu Aug 29 05:28:55 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.2
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.8
  Git commit:       6a30dfc
  Built:            Thu Aug 29 05:27:34 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

“hello world” docker 이미지 설치

$ docker run hello-world
Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:451ce787d12369c5df2a32c85e5a03d52cbcef6eb3586dd03075f3034f10adcd
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
....
For more examples and ideas, visit:
 https://docs.docker.com/get-started/

설치된 이미지 확인..

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        8 months ago        1.84kB

CentOS 부팅시 docker engine 서비스가 자동으로 실행되게 하면 좋음.

$ systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

이로써 CentOS 7 에서 docker engine을 설치완료. 굿!!

참고로 난 docker engine 을 root 계정에서 설치를 했는데..
일반 유저 계정에서 실행하려니.. 아래와 같이 에러가 발생..

$ docker version
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version: dial unix /var/run/docker.sock: connect: permission denied

이런 경우 아래와 같이 해결. 만약 유저 계정 id가 ihmin 이라면..

$ usermod -a -G docker ihmin
$ service docker restart

다음 완전히 로그아웃한다음 다시 로그인하면 잘됨..

카테고리: Linux | 태그: | 댓글 남기기

기본적인 기능은 완성..

이제 슬슬 OpenGL 에 대해서 감이오기 시작한다..
먼저 프레림은 Tcl/Tk로 잡아보았다..
Tcl/Tk는 아무래도 빠른시간안에 GUI를 만들수 있다는 장점이.. 있기에..
OpenGL draw 퍼포먼스를 올리기위해..
GPU 메모리에 올리는 코드로 수정해보니.. 상당히 빨라졌다..
물론 백만개의 정점정도는.. 무난하다..
라이팅도 추가하고.. 여러 샘플의 obj 파일중 노말 정보가 없는 놈들은..
각 정점에 대한 노말을 계산해주니.. 이젠 그럴싸 하게 출력이된다..
또 페이스 선택기능도 이제 어느정도 되었고..
아직 정점, edge 선택 기능이 필요하긴하다..
또 캐드 파일도 불어와야 할텐데.. 이것도 좀 시간을 두고 봐야겠다..

카테고리: Programming, Talk | 댓글 남기기

FEM Pre 프로세싱 프로그램

현재 FEM Pre 프로세싱 프로그램을 만들고 있다..
물론 쉽지 많은 않은것 같다..
수학에도 워낙 잼병이고.. 그렇다고.. 외부 라이브러리를 끌어다 쓸려고 하니..
그것도 수학을 잘 모르니.. 힘들고..
그렇다고 쉽게 포기해서도 안되는 법.. ㅎㅎ

현재는 Tcl/Tk 프레임에.. OpenGL, GLM, GLFW, GLEW, CGAL 기반으로 작성중이다..
물론 개발 환경은 Msys2 이다.. 이건 정말 쓸수록 물건이다..
비쥬얼 스튜디오 같은 통합 개발환경보단.. 콘솔 기반의 리눅스 개발 환경에 익숙한..
나로서는 Msys2 가 정말딱이다..
Msys2 내에서는 왠만한 라이브러리는 따로 컴파일할 필요도 없고..
pacman 으로 의존성 검사와 함께 설치까지 되니 정말 .. 말 다했다..

OpenGL을 하면 할수록.. 왜 이걸 이제서야 관심을 가졌을까 생각이든다..
이걸 할줄 알았다면.. 지금의 포지션이 달라지지 않았을까..

GLSL 도 새롭고.. 문법이야 C와 비슷하다지만.. 쉐이더라는게 참 잘 쓰면 약이고..
모르면.. 구리해지고.. 적절한 쉐이더 트라이가 필요한것 같다..

처음 몇만개의 삼각요소를 그리는데 출력 속도가 너무 버벅거렸다..
구글링을 해보니.. GPU 메모리에 올려놓고 쓰란다..
그래서 그런 식으로 node, line index 정보를 올려놓으니.. 오호라.. 정말 빨라졌다..

현재까지 구현된 항목은..
트랙볼 트랙킹.. 피봇 로테이션.. Zoom, Pan, 요소 선택.. Obj 로딩 정도만 구현해보았다..
이정도까지 하는데만 해도.. 몇개월은 걸린듯..
새로운 분야이고.. 시간도 짬 나는 시간에 조금씩 하다보니.. 맥이 끊기는 이유도 있겠지..

일단 목표는.. step이나 obj 같은.. 지오메트리 파일로부터
surface 메쉬나.. solid 메쉬까지 쳐보는것까지 해볼 생각이다..
메쉬 라이브러리는 좀더 조사해봐야 하겠지만..
CGAL 도 잘 되는듯 한데.. 암튼.. 이건 좀 시간을 두고.. 해볼생각이다..

아래는 그간 구현된 화면..

카테고리: Talk | 태그: , , , , , , | 댓글 남기기

msys2 – gcc/g++ 업데이트 및 설치

msys2 를 처음 설치하고 아래와 같이 기본 gcc/g++ 컴파일러와 필요한 유용한 라이브러리들을 설치한다.

pacman -Syu

pacman -S base-devel
pacman -S gcc
pacman -S development
pacman -S compression

pacman -S mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain

pacman -Sy git
pacman -Sy cmake

아래와 같이 설치된 컴파일러를 확인한다.

$ pacman -Ss gcc
mingw32/mingw-w64-i686-gcc 9.1.0-3 (mingw-w64-i686-toolchain)
GNU Compiler Collection (C,C++,OpenMP) for MinGW-w64
mingw32/mingw-w64-i686-gcc-ada 9.1.0-3 (mingw-w64-i686-toolchain)
GNU Compiler Collection (Ada) for MinGW-w64
...
mingw64/mingw-w64-x86_64-gcc 9.1.0-3 (mingw-w64-x86_64-toolchain) [설치함]
GNU Compiler Collection (C,C++,OpenMP) for MinGW-w64
mingw64/mingw-w64-x86_64-gcc-ada 9.1.0-3 (mingw-w64-x86_64-toolchain) [설치함]
GNU Compiler Collection (Ada) for MinGW-w64
...
msys/mingw-w64-cross-gcc 9.1.0-1 (mingw-w64-cross-toolchain mingw-w64-cross)
Cross GCC for the MinGW-w64

내가 자주사용하는 개발 패키지들도 설치한다.

pacman -Sy mingw-w64-i686-fontconfig mingw-w64-x86_64-fontconfig
pacman -Sy mingw-w64-i686-freeimage mingw-w64-x86_64-freeimage
pacman -Sy mingw-w64-i686-gl2ps mingw-w64-x86_64-gl2ps
pacman -Sy mingw-w64-i686-freetype mingw-w64-x86_64-freetype
pacman -Sy mingw-w64-i686-libpng mingw-w64-x86_64-libpng
pacman -Sy mingw-w64-i686-libtiff mingw-w64-x86_64-libtiff

pacman -Sy mingw-w64-i686-tcl mingw-w64-x86_64-tcl
pacman -Sy mingw-w64-i686-tk mingw-w64-x86_64-tk
pacman -Sy mingw-w64-i686-python2 mingw-w64-x86_64-python2
pacman -Sy mingw-w64-i686-python3 mingw-w64-x86_64-python3

pacman -Sy mingw-w64-i686-qt-creator mingw-w64-x86_64-qt-creator
pacman -Sy mingw-w64-i686-qtbinpatcher mingw-w64-x86_64-qtbinpatcher
# dynamic 버전이 필요하면 아래를 설치..
pacman -Sy mingw-w64-i686-qt5 mingw-w64-x86_64-qt5
# static 버전이 필요하면 아래를 설치..
pacman -Sy mingw-w64-i686-qt5-static mingw-w64-x86_64-qt5-static

pacman -Sy mingw-w64-i686-mpfr mingw-w64-x86_64-mpfr
pacman -Sy mingw-w64-i686-gmp mingw-w64-x86_64-gmp

pacman -Sy mingw-w64-i686-SDL2 mingw-w64-x86_64-SDL2
pacman -Sy mingw-w64-i686-allegro mingw-w64-x86_64-allegro

pacman -Sy mingw-w64-i686-boost mingw-w64-x86_64-boost
pacman -Sy mingw-w64-i686-cgal mingw-w64-x86_64-cgal
pacman -Sy mingw-w64-i686-freeglut mingw-w64-x86_64-freeglut
pacman -Sy mingw-w64-i686-glm mingw-w64-x86_64-glm
pacman -Sy mingw-w64-i686-glfw mingw-w64-x86_64-glfw
pacman -Sy mingw-w64-i686-oce mingw-w64-x86_64-oce
pacman -Sy mingw-w64-i686-glew mingw-w64-x86_64-glew

pacman -Sy mingw-w64-i686-ffmpeg mingw-w64-x86_64-ffmpeg

pacman -Sy mingw-w64-i686-zlib mingw-w64-x86_64-zlib
pacman -Sy mingw-w64-i686-readline mingw-w64-x86_64-readline
pacman -Sy mingw-w64-i686-pdcurses mingw-w64-x86_64-pdcurses

pacman -Sy mingw-w64-i686-libmariadbclient mingw-w64-x86_64-libmariadbclient

참고로 저장소에서 제공하는 패키지는 무엇이 잇는지는 아래의 싸이트에서 검색..
https://packages.msys2.org/search?t=binpkg

만약 옛 버전을 설치 해야 하는 경우는 pacman 은 버전을 지정하여 설치를 할 수 없다.
아래의 페이지에서 옛 버전을 받아서..
http://repo.msys2.org/mingw/x86_64/
다음과 같이 설치한다.

pacman -U mingw-w64-x86_64-qt5-5.10.0-1-any.pkg.tar.xz

이미 상위 버전이 설치되어 있는 경우 자동으로 다운그레이드를 함.. 굿!!

참고로 설치된 패키지의 정보들은 아래의 폴더에 위치해있음.

/var/lib/pacman/local

또.. 다운 받아진 원본 패키지들은 아래에 있음.

/var/cache/pacman/pkg

msys2 개발 환경으로 인해서 개발이 편해지고 개발 비용도 줄일수있긴하지만..
편해진 만큼 개발자들이 게을러지지 않을까.. 생각이든다. -_-;;

카테고리: Programming | 태그: , , , | 댓글 남기기

git 삭제된 파일 복구하기

물론.. commit 전인 파일이 삭제된거면.. 안됨..

git ls-files -d | xargs git checkout --
카테고리: Programming | 태그: | 댓글 남기기

가우 0.2

황치덕님이 개발한 리눅스 PC통신 프로그램.. 가우..
당시 소스코드를 올려본다.. 정말 추억이다..

gau-0.2.7z

카테고리: Linux, Programming | 댓글 남기기

CentOS 6 에서 php 5.6으로 업그레이드하기

dokuwiki 를 설치하는데 install.php 가 505 에러가 뜨면서 안된다..
확인해보니.. php 버전이 낮더라..
기본 CentOS 6 에는 php 5.3.3이 깔려있음.

# lsb_release -a
LSB Version:	:base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID:	CentOS
Description:	CentOS release 6.9 (Final)
Release:	6.9
Codename:	Final

# php -v
PHP 5.3.3 (cli) (built: Mar 22 2017 12:27:09) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
[root@olddos-bbs html]# yum --enablerepo=remi-php56 install php
Loaded plugins: fastestmirror, refresh-packagekit, security

아래와 같이 업그레이드..

# rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
# yum remove php-common php php-gd php-xml
# yum install -y php56w php56w-xml php56w-mcrypt php56w-gd php56w-devel php56w-mysql php56w-intl php56w-mbstring
# service httpd restart

단 yum install 중에.. 아래와 같이 에러가 뜨면..

Error: php56w-common conflicts with php-common-5.3.3-49.el6.x86_64
Error: Package: libmcrypt-2.5.8-13.el7.x86_64 (epel)
           Requires: libc.so.6(GLIBC_2.14)(64bit)

php56w-mcrypt 빼고 설치할것.

카테고리: Linux | 댓글 남기기