2011-08-22 6 views
0

죄송합니다 이것은 새로운 새 질문입니다. 그러나이 훌륭한 C 라이브러리를 사용할 수 있고 PHP를 사용하여 함수를 호출하고 싶습니다. 그러나 나는 리눅스 서버를 가지고있다. 여기에 사양은 ​​다음과 같습니다리눅스 서버에서 PHP로 C 라이브러리의 함수를 호출 할 수 있습니까?

  • 아파치 버전은 2.2.17
  • PHP 버전의 MySQL 버전은
  • 아키텍처 x86_64의
  • 운영 체제 리눅스
  • 를 5.1.56 - 커뮤니티 - 로그인 5.2.17
  • 커널 버전 2.6.32-29.1.BHsmp

다음 함수를 호출 할 수 있습니까? PHP에서 C 라이브러리 (ex. C 라이브러리가 리눅스 서버에 있다면 php exec() 사용)? 그렇다면 gcc를 사용하여 라이브러리를 다시 컴파일해야합니까?

감사합니다.

+0

아마도 [PHP에서 C/C++ 라이브러리 함수 호출] (http://stackoverflow.com/questions/2479402/calling-c-c-library-function-from-php) – DaveRandom

+0

감사 데이브. 나는이 질문을 보았고 클라이언트 컴퓨터가 리눅스 나 윈도우 서버를 운영하고 있는지 여부는 밝히지 않았다. 내 경우에는 리눅스이기 때문에 리눅스에서 작동하도록 라이브러리를 다시 컴파일하는 것만 큼 다른 단계가 있다고 가정합니다. – user784637

+0

PHP에서 직접 액세스하려면 라이브러리를 다시 컴파일해야합니다 (OS와 상관없이). PHP 확장으로 컴파일 될 수 있도록 소스 코드를 다시 포맷하거나 다시 작성해야합니다. 다른 질문에 연결된 Zend 문서를 살펴 본다면 Zend 문서를 만드는 방법을 알려줄 것입니다. 그러나 C (분명히)를 알아야합니다. – DaveRandom

답변

1

이러한 사양이 있습니다. 기본적으로 두 가지 옵션이 있습니다.

  1. 예를 mylib_awesome_func('hello');

  2. 에 대한 인터페이스 역할을하는 명령 줄 유틸리티를 만들기 위해, 당신은 PHP에서 직접 C-함수를 호출 할 수있는 PHP 확장 역할을하는 랩퍼 라이브러리를 작성하여 C 라이브러리를 만들고 PHP에서 exec()로이 도구를 호출하십시오. 하나 더 "깨끗한"으로 간주하지만 옵션이 매우 쉽게 할 수 있지만, 어떤 경우에는 다시 조작/전송해야 할 데이터의 종류에 따라 불가능할 수 있으며, 반면에, 확실히 단단 할 수

옵션 도서관 앞뒤로.

+1

신뢰 문제를 잊지 마세요 : 웹 서버에서 라이브러리가 실행되는 것을 신뢰합니까? 별도의 프로그램을 낮은 권한으로 실행할 수 있지만 새로운 프로세스를 생성하는 것은 모듈을로드하는 것보다 비용이 많이 듭니다. –

관련 문제