如何在CLI中配置PHP以添加pdo模块

时间:2017-01-24 10:42:43

标签: php mysql symfony doctrine cloudfoundry

目前,我正致力于在云代工厂部署php(symfony)/ MySQL应用程序。在部署之后,当我在SSH中连接以启动命令doctrines以创建数据库的模式时,我遇到了这个问题



    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>
  
&#13;
&#13;
&#13;

&#13;
&#13;
  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$
&#13;
&#13;
&#13;

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

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:0)

使用cf ssh 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&amp;初始化环境的.profile脚本。

<强>更新

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

希望有所帮助!