2017-01-24 18 views
0

В настоящее время я работаю над развертыванием приложения php (symfony)/MySQL в облачном литейном цехе. После развертывания, при подключении в SSHto запуска команд доктрин для создания схемы базы данных У меня эта проблемаКак работать с конфигурацией PHP в CLI для добавления модуля pdo

[email protected]:~/app$ ./php/bin/php app/console doctrine:schema:create --env=prod 
 

Fatal error: Class 'PDO' not found in /home/vcap/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php on line 172 
 
    [Symfony\Component\Debug\Exception\ClassNotFoundException] Attempted to load class "PDO" from the global namespace.Did you forget a "use" statement? 
 
    doctrine:schema:create [--dump-sql] [--em [EM]] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interactio 
 
    -shell] [--process-isolation] [-e|--env ENV] [--no-debug] [--] <command> 
 

[email protected]:~/app$ ./php/bin/php -m 
 
    [PHP Modules] 
 
    bcmath 
 
    calendar 
 
    Core 
 
    ctype 
 
    date 
 
    dom 
 
    ereg 
 
    filter 
 
    hash 
 
    iconv 
 
    intl 
 
    json 
 
    libxml 
 
    mhash 
 
    mysqlnd 
 
    pcre 
 
    Phar 
 
    posix 
 
    Reflection 
 
    session 
 
    SimpleXML 
 
    SPL 
 
    sqlite3 
 
    standard 
 
    tokenizer 
 
    xml 
 
    xmlreader 
 
    xmlwriter 
 
    
 
    [Zend Modules] 
 
    
 
    [email protected]:~/app$

Как активировать модуль php PDO в ClI? Спасибо за вашу помощь CDT

+0

Привет и добро пожаловать в переполнение стека. Боюсь, ссылка на скриншот неприемлема. Вы должны указать фактический код ошибки в тексте своего вопроса. – yivi

+0

Часто есть 2 файла php.ini. Один используется Apache, а другой используется CLI. Запустите 'php -i' с вашего терминала и найдите« Загруженный файл конфигурации ». В этом файле также должно быть активировано расширение PDO. – RiggsFolly

+0

Благодарим вас за ответ Я запустил эту команду с терминала 'php -i | grep file ' И у меня есть этот ответ ' Файл конфигурации (php.ini) Путь => /tmp/build/931e8e8a/binary-builder/ports/x86_64-linux-gnu/php/5.5.38/lib Загруженная конфигурация File => (none) ' и когда я пытаюсь открыть php.ini с vi, он создает новый файл (я не могу получить доступ к файлу) –

ответ

0

Если вы используете SSH в приложении с использованием cf ssh, система, к сожалению, не будет автоматически настраивать среду для вас. Это заставляет такие вещи, как PHP, работать по-разному (часто с ошибкой), потому что переменные среды, которые влияют на то, как функционируют PHP и где они ищут конфигурацию, не установлены.

Что нужно сделать, чтобы сделать то же, что и при запуске приложения, чтобы сначала настроить конфигурацию среды. Процесс для этого документирован here.

Однако перед тем, как это сделать, имейте в виду, что выполнение сценариев .profile.d и .profile может иметь побочные эффекты. Это связано с тем, что они могут быть расширены вашим приложением. Обычно это делается как способ запуска команд до запуска вашего приложения. Убедитесь, что эти сценарии безопасны для запуска до выполнения следующих команд! Если части небезопасны, то не запускайте их. Просто выполните безопасные команды.

Для справки здесь, процесс сводится к выполнению этих команд:

export HOME=/home/vcap/app 
export TMPDIR=/home/vcap/tmp 
cd /home/vcap/app 
source /home/vcap/app/.profile.d/*.sh 
source /home/vcap/app/.profile 

Это источники .profile.d & .profile сценарии, которые инициализация среды.

UPDATE:

Немного более простой способ сделать это, чтобы запустить cf ssh myapp -t -c "/tmp/lifecycle/launcher /home/vcap/app bash ''".Это откроет оболочку bash, и она позволит запускать средство запуска жизненного цикла с настройкой среды &.

Надеюсь, что это поможет!

+0

Да это работает, я понял большое спасибо за вашу помощь @Daniel Mikusa Спасибо всем за ваше участие –

1

вам необходимо установить php-mysql

apt-get install php-mysql 

если вы используете php7

apt-get install php7.0-mysql 

найти файл php.ini и поиск pdo_mysql

;extension=php_pdo_mysql.so 

удалить;

extension=pdo_mysql.so 

Сохраните файл и перезапустите службу и проверьте.

+0

Благодарим вас за ответ Я запускаю эту команду с терминала ** php -i | grep file ** И у меня есть этот ответ ** Файл конфигурации (php.ini) Путь => /tmp/build/931e8e8a/binary-builder/ports/x86_64-linux-gnu/php/5.5.38/lib Загруженный файл конфигурации => (none) ** , и когда я пытаюсь открыть php.ini с vi, он создает новый файл (я не могу получить доступ к файлу) –

+0

, если вы используете ubuntu, тогда «/ etc/php5/apache2/php .ini " –

+0

Это не будет работать с Cloud Foundry. Ваше приложение работает как пользователь без полномочий root на CF, и вы не можете установить произвольный пакет с apt-get. –

 Смежные вопросы

  • Нет связанных вопросов^_^