如何在 CLI 中对 PHP 的配置进行操作以添加 pdo 模块

How to act on the configuration of PHP in CLI to add pdo module

目前,我正在努力在 Cloud Foundry 上部署 php (symfony)/MySQL 应用程序。部署后,当我在 SSH 中连接以启动用于创建数据库模式的命令原则时,我遇到了这个问题

    vcap@5nkjb8jdl87:~/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>
  

  vcap@5nkjb8jdl87:~/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]
    
    vcap@5nkjb8jdl87:~/app$

如何在 ClI 中激活 php PDO 模块? 谢谢您的帮助 cdt

您需要安装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

保存文件并重启服务并验证。

当您使用 cf ssh SSH 进入应用程序时,不幸的是系统不会自动为您配置环境。这会导致像 PHP 这样的东西以不同的方式运行(通常是失败),因为影响 PHP 运行方式和查找配置位置的环境变量没有设置。

要使事情与您的应用程序 运行s 相同,您需要做的是首先获取环境配置。执行此操作的过程记录在案 here.

但是在这样做之前请记住,执行 .profile.d.profile 脚本可能会有 side-effects。这是因为您的应用程序可以扩展这两者。这通常是在您的应用程序启动之前作为 运行 命令的一种方式完成的。在执行以下命令之前,请确保这些脚本对 运行 是安全的!如果零件不安全,则不要 运行 它们。只执行安全的命令。

作为参考,该过程归结为 运行执行这些命令:

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 脚本。

更新:

一个更简单的方法是 运行 cf ssh myapp -t -c "/tmp/lifecycle/launcher /home/vcap/app bash ''"。这将打开一个 bash shell 并让生命周期启动器处理采购和设置环境。

希望对您有所帮助!