本文目錄一覽:
- 1、linux配置源代碼包時出現下面錯誤
- 2、Linux 源代碼包配置PHP時出錯:configure: error: GD build test failed. Please check the config.log
- 3、ubuntu16.04 安裝 php 5.6.30 對應的 mysqlnd 版本是多少
- 4、求mysql_query 內部源碼
- 5、時時教大家搭建PHP環境 怎麼用PHP源碼安裝
- 6、PHP7.0打開擴展功能要怎樣才能和mysql相連?
linux配置源代碼包時出現下面錯誤
“exact error that occured. This usually means GLIB is incorrectly installed”
是不是由於GLIB的版本太低了?查看你的軟件的readme啊,確認你的系統是否滿足所有依賴關係。
Linux 源代碼包配置PHP時出錯:configure: error: GD build test failed. Please check the config.log
./configure –prefix=/usr/local/php/ –with-apxs2=/usr/local/apache2/bin/apxs –with-config-file-path=/usr/local/php/lib/ –with-config-file-scan-dir=/usr/local/etc/ –with-zlib –with-curl –enable-bcmath –with-jpeg-dir –with-png-dir –with-xpm-dir –with-freetype-dir –with-gd –with-mhash –enable-mbstring –with-mcrypt –with-libxml-dir –with-iconv-dir –with-pcre-dir –enable-mysqlnd –with-mysql=mysqlnd –with-mysqli=mysqlnd
看一下是不是有庫不全?
ubuntu16.04 安裝 php 5.6.30 對應的 mysqlnd 版本是多少
如果你用的是apt-get安裝的話,php的版本就是軟件中心配置好了的,這個你就沒法決定安裝版本。如果你想安裝指定版本的話,就只有到官網去下載源碼,然後自己編譯安裝了
求mysql_query 內部源碼
Sends an SQL query to MySQL */
PHP_FUNCTION(mysql_query)
{
php_mysql_do_query(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQL_STORE_RESULT);
}
static void php_mysql_do_query(INTERNAL_FUNCTION_PARAMETERS, int use_store)
{
char *query;
size_t query_len;
zval *mysql_link = NULL;
php_mysql_conn *mysql;
if (zend_parse_parameters(ZEND_NUM_ARGS(), “s|r”, query, query_len, mysql_link) == FAILURE) {
return;
}
if (!mysql_link) {
zend_resource *res = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
CHECK_LINK(res);
mysql = (php_mysql_conn*)res-ptr;
} else {
if (!(mysql = (php_mysql_conn *)zend_fetch_resource2(Z_RES_P(mysql_link), “MySQL-Link”, le_link, le_plink))) {
RETURN_FALSE;
}
}
php_mysql_do_query_general(mysql, query, query_len, NULL, use_store, return_value);
}
/* {{{ php_mysql_do_query_general
*/
static void php_mysql_do_query_general(php_mysql_conn *mysql, char *query, int query_len, char *db, int use_store, zval *return_value)
{
MYSQL_RES *mysql_result;
if (db) {
if (!php_mysql_select_db(mysql, db)) {
RETURN_FALSE;
}
}
PHPMY_UNBUFFERED_QUERY_CHECK();
MYSQL_DISABLE_MQ;
#ifndef MYSQL_USE_MYSQLND
/* check explain */
if (MySG(trace_mode)) {
if (!strncasecmp(“select”, query, 6)){
MYSQL_ROW row;
char *newquery;
int newql = spprintf(newquery, 0, “EXPLAIN %s”, query);
mysql_real_query(mysql-conn, newquery, newql);
efree (newquery);
if (mysql_errno(mysql-conn)) {
php_error_docref(“”, E_WARNING, “%s”, mysql_error(mysql-conn));
RETURN_FALSE;
}
else {
mysql_result = mysql_use_result(mysql-conn);
while ((row = mysql_fetch_row(mysql_result))) {
if (!strcmp(“ALL”, row[1])) {
php_error_docref(“”, E_WARNING, “Your query requires a full tablescan (table %s, %s rows affected). Use EXPLAIN to optimize your query.”, row[0], row[6]);
} else if (!strcmp(“INDEX”, row[1])) {
php_error_docref(“”, E_WARNING, “Your query requires a full indexscan (table %s, %s rows affected). Use EXPLAIN to optimize your query.”, row[0], row[6]);
}
}
mysql_free_result(mysql_result);
}
}
} /* end explain */
#endif
/* mysql_query is binary unsafe, use mysql_real_query */
#if MYSQL_VERSION_ID 32199
if (mysql_real_query(mysql-conn, query, query_len)!=0) {
/* check possible error */
if (MySG(trace_mode)){
if (mysql_errno(mysql-conn)){
php_error_docref(“”, E_WARNING, “%s”, mysql_error(mysql-conn));
}
}
RETURN_FALSE;
}
#else
if (mysql_query(mysql-conn, query)!=0) {
/* check possible error */
if (MySG(trace_mode)){
if (mysql_errno(mysql-conn)){
php_error_docref(“”, E_WARNING, “%s”, mysql_error(mysql-conn));
}
}
RETURN_FALSE;
}
#endif
if(use_store == MYSQL_USE_RESULT) {
mysql_result = mysql_use_result(mysql-conn);
} else {
mysql_result = mysql_store_result(mysql-conn);
}
if (!mysql_result) {
if (PHP_MYSQL_VALID_RESULT(mysql-conn)) { /* query should have returned rows */
php_error_docref(NULL, E_WARNING, “Unable to save result set”);
RETURN_FALSE;
} else {
RETURN_TRUE;
}
}
MySG(result_allocated)++;
ZVAL_RES(return_value, zend_register_resource(mysql_result, le_result));
if (use_store == MYSQL_USE_RESULT) {
mysql-active_result_res = Z_RES_P(return_value);
Z_ADDREF_P(return_value);
}
}
/* }}} */
時時教大家搭建PHP環境 怎麼用PHP源碼安裝
[Raykaeso@LAMP httpd-2.4.17]# cd /LAMP
[Raykaeso@LAMP LAMP]# yum -y install libxml2-devel #不裝這個編譯不了PHP5.6
[Raykaeso@LAMP LAMP]# yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel png jpeg gd #開啟GD庫需要的依賴
[Raykaeso@LAMP LAMP]# yum -y install curl curl-devel #開啟CURL庫需要的依賴
[Raykaeso@LAMP LAMP]# tar -zvxf php-5.6.16.tar.gz
[Raykaeso@LAMP LAMP]# cd php-5.6.16
[Raykaeso@LAMP php-5.6.16]# ./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc –enable-fpm –enable-sysvsem –enable-sockets –enable-pcntl –enable-mbstring –enable-mysqlnd –enable-pdo –with-pdo-mysql –enable-opcache –enable-shmop –enable-zip –enable-ftp –enable-gd-native-ttf –enable-wddx –enable-soap –with-png-dir –with-freetype-dir –with-jpeg-dir –with-gd –with-mysqli
[Raykaeso@LAMP php-5.6.16]# make make install
拷貝一份正式的php-fpm.conf和php.ini配置文件
[Raykaeso@LAMP php-5.6.16]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[Raykaeso@LAMP php-5.6.16]# cp ./php.ini-production /usr/local/php/etc/php.ini
PHP7.0打開擴展功能要怎樣才能和mysql相連?
第一步:進入php源碼中的”ext/mysql”目錄下
第二步:在當前目錄下運行phpize命令:/usr/local/php524/bin/phpize
phpize的規則:去哪個目錄下運行phpize文件,那麼就會在該目錄下生成一個configure文件。
第三步:運行剛才生成的configure文件
命令: ./configure –with-php-config=/usr/local/php524/bin/php-config –with-mysql=/usr/local/mysql/
這裡最關鍵的是通過–with-mysql參數告訴mysql客戶端的位置。這樣才能生成mysql.so。
實驗的時候,沒有加這個參數,結果錯誤:
./configure –with-php-config=/usr/local/php524/bin/php-config
第四步:編譯生成.so文件
第五步:配置php引擎加載該擴展。
補充一下:就是去php.ini文件中修改一下配置,加載mysql.so這個擴展(這個擴展文件要放到php指定的擴展目錄下面去)
第六步:測試php引擎是否成功加載該擴展編寫文件phpinfo.php,內容是:?php ehco phpinfo(); ?
運行後,可以看到有如下信息顯示:mysqlMySQLSupport enabledActive PersistentLinks 0
Active Links 0
Client API version 5.1.55
MYSQL_MODULE_TYPE no value
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_INCLUDE no value
MYSQL_LIBS no value
通過這樣的方式可以確認,php引擎已經成功加載了mysql.so擴展。
第七步:已經生成的mysql.so。編寫php代碼測試是否能連接mysql。
一、為什麼書中一般是常常是這樣的順序安裝。
先安裝mysql,然後再安裝php,很少看到先安裝php,後安裝mysql?
這樣做。是基於下面原因:安裝好mysql後。mysql.so這個模塊才能生成。記得一個細節:在安裝php的時候,需要提供mysql的路徑。由php幫助編譯生成mysql.so模塊。mysql.so這個模塊是在安裝好php的時候生成的。
生成這個模塊需要用到一個東西:mysql客戶端。如果先安裝php,後安裝mysql。那麼無法按照原來的方式(由php幫助生成mysql.so模塊)掛接mysql.so。通過實踐,發現使用phpize工具生成mysql.so可以解決這個問題。
二、實踐生成mysql.so的過程。
大體思路:需要用到php的源碼包才行。通過源碼包中提供的phpize文件(一個專門掛接php擴展的工具)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/150525.html