Share Your AWS re:Post Experience - Quick 3 Question Survey
Help us improve AWS re:Post! We're interested in understanding how you use re:Post and its impact on your AWS journey. Please take a moment to complete our brief 3-question survey.
Come posso risolvere l'errore irreversibile di PHP che ricevo quando distribuisco un'applicazione su una piattaforma PHP Elastic Beanstalk che si connette a un database Microsoft SQL Server?
Ricevo un errore irreversibile di PHP durante la distribuzione di un'applicazione su una piattaforma PHP AWS Elastic Beanstalk che si connette a un database Microsoft SQL Server.
Breve descrizione
Quando distribuisci un'applicazione su una piattaforma PHP Elastic Beanstalk che si connette a un database Microsoft SQL Server, potresti ricevere l'errore seguente: "PHP Fatal error: Uncaught Error: Call to undefined function sqlsrv_connect() in /var/app/current/DB/" (Errore irreversibile PHP: errore non rilevato: Chiamata alla funzione non definita sqlsrv_connect() in /var/app/current/DB/)
Per connettere PHP a un database Microsoft SQL Server, devi prima installare e configurare la libreria SQLSRV e la sua estensione PDO. Per impostazione predefinita, questa libreria ed estensione non sono installate e configurate.
Per installare la libreria SQLSRV e l'estensione PDO, puoi utilizzare un file di configurazione .ebextensions che esegue uno script nelle tue istanze Amazon Elastic Compute Cloud (Amazon EC2). Lo script esegue le seguenti operazioni:
- Installa il driver e gli strumenti corretti per Microsoft SQL Server
- Attiva le librerie e le estensioni PHP richieste
Risoluzione
Nota: I seguenti passaggi si applicano agli ambienti Elastic Beanstalk con qualsiasi versione della piattaforma PHP.
-
Nella cartella principale del pacchetto dell'applicazione, crea una directory denominata .ebextensions.
-
Crea un file di configurazione .ebextensions, ad esempio il seguente file .ebextensions/pdo\ _sqlsrv.config:
Importante: Il file.ebextensions utilizzato nella seguente risoluzione è applicabile solo per le istanze Amazon Linux 1 e Amazon Linux 2 Amazon Machine Image (AMI). Il file .ebextensions non si applica a Windows o alle istanze AMI di Ubuntu personalizzate in Elastic Beanstalk.
################################################################################################### #### Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. #### #### Permission is hereby granted, free of charge, to any person obtaining a copy of this #### software and associated documentation files (the "Software"), to deal in the Software #### without restriction, including without limitation the rights to use, copy, modify, #### merge, publish, distribute, sublicense, and/or sell copies of the Software, and to #### permit persons to whom the Software is furnished to do so. ################################################################################################### ################################################################################################### #### THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, #### INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A #### PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT #### HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION #### OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE #### SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ################################################################################################### commands: install_mssql: command: | #!/bin/bash set -x # 0. EXIT if pdo_sqlsrv is already installed if php -m | grep -q 'pdo_sqlsrv' then echo 'pdo_sqlsrv is already installed' else # 1. Install libtool-ltdl-devel yum -y install libtool-ltdl-devel # 2. Register the Microsoft Linux repository wget https://packages.microsoft.com/config/rhel/8/prod.repo -O /etc/yum.repos.d/msprod.repo # 3. Install MSSQL and tools ACCEPT_EULA=N yum install mssql-tools msodbcsql17 unixODBC-devel -y --disablerepo=amzn* # The license terms for this product can be downloaded from http://go.microsoft.com/fwlink/?LinkId=746949 and found in /usr/share/doc/mssql-tools/LICENSE.txt . By changing "ACCEPT_EULA=N" to "ACCEPT_EULA=Y", you indicate that you accept the license terms. echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc # 4. Install SQLSRV and its PDO extension, and stop pecl/pecl7 from overwriting php.ini cp -f "/etc/php.ini" "/tmp/php.ini.bk" pecl7 install sqlsrv pdo_sqlsrv || pecl install sqlsrv pdo_sqlsrv cp -f "/tmp/php.ini.bk" "/etc/php.ini" # 5. Manually add the extensions to the proper php.ini.d file and fix parameters sqlvar=$(php -r "echo ini_get('extension_dir');") && chmod 0755 $sqlvar/sqlsrv.so && chmod 0755 $sqlvar/pdo_sqlsrv.so echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/30-pdo_sqlsrv.ini echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/20-sqlsrv.ini fi
-
Crea un pacchetto di origine dell'applicazione che includa il tuo file .ebextensions dal passaggio 2.
-
Implementa la tua applicazione Elastic Beanstalk aggiornata.

Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata un mese fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 3 mesi fa