====== php ======
===== Tips =====
==== curlが有効にならない ====
phpMyFAQを導入する際に「ext/curl」が不足しているエラーが出て先に進めない。\\
php.iniでcurlを正しく設定してある。
extension=curl
それでも「var_dump(extension_loaded('curl'));」を実行すると結果はfalse\\
[[https://took.jp/post-879/|PHPでcurl関数を呼び出せないときの対処法]]
=== 対応 ===
次のファイルだけをapacheのbinに入れて再起動すると動作した。
* libssh2.dll
* nghttp2.dll
* libcrypto-1_1-x64.dll
* libssl-1_1-x64.dll
var_dump(extension_loaded('curl'));を実行すると結果はtrue
[[https://qiita.com/gyoniku-daisuki/items/9a9fb240726103bbb29e|Windows10 + PHP7.2+Apache2.4でcurlを有効にする]]
==== Deprecate curly brace syntax for accessing array elements and string offsets ====
PHP 7.1→7.4にバージョンアップした際に、dokuwikiを動かすと警告メッセージが出る。
[[https://qiita.com/rana_kualu/items/6ac293f238c4e6000720|【PHP7.4】波括弧による文字列|配列アクセスが削除される]]
PHPは、配列要素と文字列オフセットへのアクセスに、角括弧と波括弧の両方を使用することができます。しかし、これら両方の構文のサポートは、混乱をもたらす可能性があります。\\
よって、波括弧の使用箇所はサポート外として警告メッセージが出る。
if($path{0} == '/'){
↓
if($path[0] == '/'){
==== SQL Serverの接続 ====
=== php.iniの設定 ===
php7.4ならphp_sqlsrv_74を選択、phpinfo()のThread Safetyが「enabled」ならスレッドセーフ版を使用する。Apacheはスレッドセーフ版、IISは非スレッドセーフ版でもいい。
ドライバーを[[https://docs.microsoft.com/en-us/sql/connect/php/system-requirements-for-the-php-sql-driver?redirectedfrom=MSDN&view=sql-server-ver16|ダウンロード]]して、解凍した中からdllをphp内のextフォルダに入れる。
^スレッドセーフ|php_sqlsrv_74_ts_x64.dll,php_pdo_sqlsrv_74_ts_x64|
^非スレッドセーフ|php_sqlsrv_74_nts_x64.dll,php_pdo_sqlsrv_74_nts_x64|
extension=php_pdo_sqlsrv_74_ts_x64.dll
extension=php_sqlsrv_74_ts_x64.dll
[[https://atmarkit.itmedia.co.jp/ait/articles/1810/23/news023.html|PHPからSQL Serverに接続してみよう]]
=== エラー ODBC Driver ===
This extension requires the Microsoft ODBC Driver for SQL Server.
Access the following URL to download the ODBC Driver for SQL Server for x64
https://go.microsoft.com/fwlink/?LinkId=163712
[[https://go.microsoft.com/fwlink/?LinkId=163712|System requirements for the Microsoft Drivers for PHP for SQL Server]]
【対応】\\
ODBCドライバーのインスールが必要。\\
[[https://docs.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16
|ODBCドライバーのダウンロード先]]
=== エラー SSL Provider ===
[ODBC Driver 18 for SQL Server]SSL Provider
[[https://stackoverflow.com/questions/71688125/odbc-driver-18-for-sql-serverssl-provider-error1416f086|ODBC Driver 18 for SQL Server]SSL Provider: [error:1416F086]]]
【対応】\\
接続情報に「TrustServerCertificate=true」を追加する。
=== ログインエラー ===
ログインするユーザーがいない。
【対応】
SQL Server側で新規にデータベース「NET_FAQJA」を作成、セキュリティのログインのTEST_SUPPORTプロパティにあるユーザーマッピングで「NET_FAQJA」にチェックを付ける。
"NET_FAQJA", 'UID' => 'TEST_SUPPORT', 'PWD' => 'TEST_SUPPORT', 'CharacterSet' => 'UTF-8', 'TrustServerCertificate' => true);
/* Connect using Windows Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "Unable to connect.";
die( print_r( sqlsrv_errors(), true));
}
sqlsrv_close( $conn);
?>