Debian 서버 9 서버의 소스에서 PHP 5.6을 설치했습니다. Debian 9의 OpenSSL 버전은 PHP 5.6에서는 너무 새로운 버전이므로 PHP 5.6에서 사용하려면 /opt/openssl에서 이전 버전을 컴파일해야 합니다. (버전 openssl-1.0.1t)
PHP5.6의 컴파일을 다음과 같이 구성합니다.
./configure --prefix=/opt/PHP/php-5.6 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-pdo-mysql --with-mysqli --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl=/opt/openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm
명령 후에 PHP5.6이 make
작동하고 있습니다.make install
연결을 테스트하기 위해 다음 PHP 스크립트를 작성했습니다(좋은 값도 숨겼습니다).
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
?>
나는 이 결과를 시험해 보았습니다.
/opt//PHP/php-5.6/bin/php connect_db.php
Connection failed: SQLSTATE[HY000] [2002] No such file or directory
동일한 서버에서 다음 컴파일 구성을 사용하여 소스에서 PHP7.1을 컴파일했습니다.
./configure --prefix=/opt/PHP/php-7.1 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-zlib --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-pdo-mysql --with-mysqli --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg-dir=/usr --with-png-dir=/usr --with-openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-imap --with-imap-ssl --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm
동일한 PHP 스크립트를 시도했는데 정상적으로 작동합니다.
/opt//PHP/php-7.1/bin/php connect_db.php
Connected successfully
PHP7.1 구성 요소와 동일한 효과를 얻으려면 PHP5.6 컴파일을 구성하는 방법은 무엇입니까?
답변1
스크립트 줄을 바꾸면 다음과 같은 사실을 발견했습니다.
$servername = "localhost";
이를 통해
$servername = "127.0.0.1";
이 스크립트는 PHP5.6 및 PHP7.1을 사용하여 데이터베이스에 연결합니다.
/opt/PHP/php-5.6/bin/php connect_db.php
Connected successfully
문제가 어디서 발생하는지 확인하려면 언제든지 의견을 남겨주세요.