nginx安裝擴充套件模組報錯

技術小牛人發表於2017-11-16

安裝nginx擴充套件模組的時候報錯如下:

[root@21d80854d33f memcached-1.4.24]$phpize 

Cannot find config.m4. 

Make sure that you run `/usr/bin/phpize` in the top level source directory of the module


可能的原因:1.安裝包沒找對, 解壓的資料夾中沒有config.m4  下載正確的擴充套件包安裝


2.

你的模擴充套件的時候最好

  放在/usr/local/src/php-4.3.5/ext下

  來執行他你在這裡也可以這樣/usr/local/php/bin/phpize來執行也可以

  phpize來執行

  我們在/usr/local/src/php-4.3.5/ext下找到這個工具

  來建立一個php擴充套件的一個框架

  [root@ns ext]#cd /usr/local/src/php-4.3.5/ext/

  [root@ns ext]# ./ext_skel –extname=sdomain

  Creating directory sdomain

  Creating basic files: config.m4 .cvsignore sdomain.c php_sdomain.h CREDITS EXPERIMENTAL tests/001.phpt sdomain.php [done].

To use your new extension, you will have to execute the following steps:

  1. $ cd ..

  2. $ vi ext/sdomain/config.m4

  3. $ ./buildconf

  4. $ ./configure –[with|enable]-sdomain

  5. $ make

  6. $ ./php -f ext/sdomain/sdomain.php

  7. $ vi ext/sdomain/sdomain.c

  8. $ make

  執行了這個步驟以後你會看到這樣的結果

  Repeat steps 3-6 until you are satisfied with ext/sdomain/config.m4 and

  step 6 confirms that your module is compiled into PHP. Then, start writing

  code and repeat the last two steps as often as necessary.

  這樣以後我們會在這個目錄下生成一個目錄叫sdomain

  進入這裡面我們看看

  [root@ns ext]# cd sdomain/

  [root@ns sdomain]# ls

  config.m4 EXPERIMENTAL     sdomain.php  tests

  CREDITS  sdomain.c php_sdomain.h

  然後我們要修改檔案順序是

  configue.m4

  sdomain.c

  php_sdomain.h

  使用文字編輯器開啟config.m4檔案,檔案內容大致如下:

  dnl $Id$d

  dnl config.m4 for extension my_module

  dnl dont forget to call PHP_EXTENSION(my_module)

  dnl Comments in this file start with the string dnl.

  dnl Remove where necessary. This file will not work

  dnl without editing.

dnl If your extension references something external, use with:

  dnl PHP_ARG_WITH(my_module, for my_module support,

  dnl Make sure that the comment is aligned:

  dnl [ –with-my_module       Include my_module support])

  dnl Otherwise use enable:

  dnl PHP_ARG_ENABLE(my_module, whether to enable my_module support,

  dnl Make sure that the comment is aligned:

  dnl [ –enable-my_module      Enable my_module support])

  if test $PHP_MY_MODULE != no; then

  dnl If you will not be testing anything external, like existence of

  dnl headers, libraries or functions in them, just uncomment the

  dnl following line and you are ready to go.

  dnl Write more examples of tests here…

  PHP_EXTENSION(my_module, $ext_shared)

  Fi

  根據你自己的選擇將

  dnl PHP_ARG_WITH(my_module, for my_module support,

  dnl Make sure that the comment is aligned:

  dnl [ –with-my_module       Include my_module support])

  修改成

  PHP_ARG_WITH(my_module, for my_module support,

  [ –with-my_module       Include my_module support])

  或者將

  dnl PHP_ARG_ENABLE(my_module, whether to enable my_module support,

  dnl Make sure that the comment is aligned:

  dnl [ –enable-my_module      Enable my_module support])

修改成

  PHP_ARG_ENABLE(my_module, whether to enable my_module support,

  [ –enable-my_module      Enable my_module support])

        (其實就是將這部分的dnl去掉,在這個檔案裡dnl就是註釋的意思,相當於我們PHP裡面的#或// 另外把他中間的一句描術也去掉)

  我這裡用了後者

  然後儲存退出

  然後在編輯

  Vi my_module.c

  將檔案其中的下列程式碼進行修改

/* Every user visible function must have an entry in my_module_functions[].

*/

function_entry my_module_functions[] = {

PHP_FE(say_hello,    NULL) /* ?新增著一行程式碼 */

PHP_FE(confirm_my_module_compiled,   NULL) /* For testing, remove later. */

{NULL, NULL, NULL}   /* Must be the last line in my_module_functions[] */

};

  在檔案的最後新增下列程式碼

PHP_FUNCTION(say_hello)

{

zend_printf(“hello sdomain!”);

}

再修改:php_sdomain.h

vi php_sdomain.h

在PHP_FUNCTION(confirm_my_module_compiled ); /* For testing, remove later. */ 這行的下面新增一行:

PHP_FUNCTION(say_hello); /* For testing, remove later. */

  儲存檔案退出

本文轉自    憬薇   51CTO部落格,原文連結:http://blog.51cto.com/welcomeweb/1702911


相關文章