编译php后输入
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql
我可以成功连接到数据库,但随后我启用了 openssl 和 mbstring 扩展
我输入了
./configure --with-openssl --with-apxs2=/usr/local/apache2/bin/apxs
和
./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable--mbstring --with-libmbfl
现在我无法连接php和mysql。
这是我正在使用的代码:
?php
$username = "phptest";
$servername = "localhost";
$password = "cucaramacara";
$dbname = "phpsampledb";
try{
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password$
//set the PDO
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected succesfully";
}
catch(PDOException $e){
echo "Connection failed:".$e->getMessage();
}
?>
当我php
在终端上输入时,它显示:
PHP 警告:PHP 启动:无法加载动态库 '/usr/local/lib/php/extensions/no-debug-zts-20131226/pdo_mysql.so' - /usr/local/lib/php/extensions/no-debug -zts-20131226/pdo_mysql.so: 无法打开共享对象文件: 第 0 行的未知中没有这样的文件或目录
答案1
正如 yoonix 所说,你是做错了:configure
应该运行脚本一次和全部您要指定的选项:
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql \
--with-openssl --enable--mbstring --with-libmbfl
来电configure
不会累积 - 他们覆盖彼此。最后一名获胜。
配置的每个选项都指定对供应商默认值的更改,因此您在描述中所做的就是告诉configure
以下内容:
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql
请准备构建 PHP。使用所有默认设置,除了我想使用 PDO MySQL 驱动程序。
因此configure
准备使用 PDO MySQL 驱动程序进行构建。然后你告诉它
./configure --with-openssl --with-apxs2=/usr/local/apache2/bin/apxs
请准备构建 PHP。使用所有默认设置,除了我想要启用 OpenSSL。
所以configure准备一个启用OpenSSL的构建,以及所有其他默认值(再见PDO MySQL驱动程序,因为这不是默认行为)。
然后你告诉它
./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable--mbstring --with-libmbfl
请准备构建 PHP。使用所有默认设置除了启用多字节字符串和
libmfl
.
因此,configure 使用这些选项准备构建 - 没有 PDO(因为这不是默认值),并且我认为没有 OpenSSL(因为我认为这也不是默认值)。
当您make
每次仅使用指定的选项进行构建时运行你上次跑步的时候configure
。