PHP – 제거된 확장 모듈 및 SAPI

안녕하세요, PHP 개발자 지망생 여러분! PHP의 진화 중 중요한 측면인 제거된 확장 모듈과 SAPI에 대해 안내해드리게 되어 기쁩니다. 여러분의 친절한 이웃 컴퓨터 교사로서 오랜 경험을 바탕으로 이 내용을 설명하겠습니다. 프로그래밍 경험이 없는 사람들도 이해할 수 있도록 쉽게 설명하겠습니다. 그럼 커피(또는 차, 선호하시는 음료를) 한 잔 마시면서 시작해보겠습니다!

PHP - Removed Extensions & SAPIs

제거된 확장 모듈

PHP의 확장 모듈은 언어에 추가 기능을 제공하는 것과 같습니다. 시간이 지남에 따라 일부 확장 모듈은 구식이 되거나 불필요하게 되고, PHP는 이를 제거합니다. 몇 가지 주요 제거된 확장 모듈과 그 이유를 알아보겠습니다.

1. mysql

mysql 확장 모듈은 PHP의 초기 버전에서 가장 널리 사용된 확장 모듈 중 하나였습니다. MySQL 데이터베이스와 상호작용할 수 있게 해주었습니다. 그러나 보안 문제와 구식 설계로 인해 PHP 7.0에서 제거되었습니다.

이 확장 모듈을 사용하여 MySQL 데이터베이스에 연결하는 예제는 다음과 같습니다:

<?php
$connection = mysql_connect("localhost", "username", "password");
mysql_select_db("my_database", $connection);
$result = mysql_query("SELECT * FROM users");
while ($row = mysql_fetch_assoc($result)) {
echo $row['name'] . "<br>";
}
mysql_close($connection);
?>

이 코드는 데이터베이스에 연결하고 모든 사용자를 선택하는 쿼리를 실행하여 그들의 이름을 출력합니다. 간단하지 않나요? 하지만 보안 결함이 있었고 최신 MySQL 기능을 지원하지 않았습니다.

2. ereg

ereg 확장 모듈은 정규 표현식 함수를 제공했습니다. 이 확장 모듈은 PHP 7.0에서 빠르고 기능이 풍부한 PCRE(Perl 호환 정규 표현식) 확장 모듈보다 느리고 기능이 적어 제거되었습니다.

ereg를 사용하는 예제는 다음과 같습니다:

<?php
if (ereg("^[a-zA-Z0-9]+$", $username)) {
echo "Valid username";
} else {
echo "Invalid username";
}
?>

이 코드는 사용자 이름이 알파벳과 숫자로 구성되어 있는지 확인합니다. 잘 작동했지만, PCRE와 비교했을 때 효율성이 낮았고 강력하지 않았습니다.

3. mssql

mssql 확장 모듈은 Microsoft SQL Server 데이터베이스에 연결하는 데 사용되었습니다. 이 확장 모듈은 PHP 7.0에서 더 현대적이고 기능이 풍부한 sqlsrv 확장 모듈로 대체되었습니다.

mssql을 사용하여 MSSQL 데이터베이스에 연결하는 간단한 예제는 다음과 같습니다:

<?php
$connection = mssql_connect("localhost", "username", "password");
mssql_select_db("my_database", $connection);
$result = mssql_query("SELECT * FROM products");
while ($row = mssql_fetch_array($result)) {
echo $row['product_name'] . "<br>";
}
mssql_close($connection);
?>

이 코드는 MSSQL 데이터베이스에 연결하고 모든 제품을 가져오며 그 이름을 출력합니다.

제거된 확장 모듈 표

여기서 몇 가지 주요 제거된 확장 모듈을 요약한 표를 제공합니다:

확장 모듈 제거된 버전 대체 모듈
mysql PHP 7.0 mysqli 또는 PDO_MySQL
ereg PHP 7.0 PCRE (preg_* 함수)
mssql PHP 7.0 sqlsrv 또는 PDO_SQLSRV
mcrypt PHP 7.2 OpenSSL
recode PHP 7.4 iconv 또는 mbstring

제거된 SAPI

SAPI는 Server Application Programming Interface의 약자로, PHP와 웹 서버 간의 레이어를 의미합니다. 시간이 지남에 따라 일부 SAPI가 PHP에서 제거되었습니다. 몇 가지 예를 보겠습니다.

1. php-fpm (FastCGI Process Manager)

자, 장난입니다! php-fpm은 제거되지 않았습니다. 사실, 이는 PHP에서 가장 인기 있는 SAPI 중 하나입니다. 여러분을 신경 쓰게 하기 위해 약간의 장난을 했습니다. 프로그래밍 세계에서는 항상 경계하셔야 합니다!

2. apache_hooks

apache_hooks SAPI는 PHP 7.0에서 제거되었습니다. 이는 Apache 1.x 모듈의 대체 모듈로 Apache의 hook API를 사용했습니다. 그러나 Apache 2.x가 표준이 되면서 구식이 되었습니다.

Apache와 PHP를 사용하는 과거의 간단한 예제는 다음과 같습니다:

<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>

이 Apache 설정은 PHP 애플리케이션을 위한 가상 호스트를 설정합니다. 이 설정이 apache_hooks에 특화되지 않았지만, PHP와 Apache가 어떻게 함께 작동하는지 이해하는 데 도움이 됩니다.

3. aolserver

aolserver SAPI는 PHP 5.3에서 제거되었습니다. 이는 AOLserver 웹 서버와 PHP를 통합하는 데 사용되었습니다. AOLserver는 더 이상 널리 사용되지 않습니다.

제거된 SAPI 표

여기서 몇 가지 주요 제거된 SAPI를 요약한 표를 제공합니다:

SAPI 제거된 버전 비고
apache_hooks PHP 7.0 구식 Apache 1.x 모듈
aolserver PHP 5.3 AOLserver 통합
caudium PHP 7.0 Caudium 웹서버
continuity PHP 7.0 Continuity 서버

결론적으로, PHP의 진화는 새로운 기능을 추가하는 것뿐만 아니라 구식이거나 문제가 있는 기능을 제거하는 것도 포함합니다. 개발자로서는 이러한 변화를 따라가는 것이 중요합니다. 코드가 효율적이고 안전하며 최신 PHP 버전과 호환되도록 유지해야 합니다.

기억하세요, 프로그래밍 세계에서 변화는 유일한 상수입니다. 이를 받아들이고 배우면 개발자로서 성장할 수 있습니다. 행복한 코딩을 기원하며, PHP 여정이 버그 없이 즐거운 여행이 되기를 바랍니다!

Credits: Image by storyset