• mac在xampp下使用yii2.0开发环境配置


      在mac上装环境,折腾了我好久。先用是mac自带的php,但自带的PHP很多扩展都需要自己安装。libevent,memcache等扩展都安装好了之后,发现pdo_mysql.dll扩展又没有,悲剧的是下班回来好几天都没搞好。因为年底比较忙,所以只有下班回来才能调环境。后来不行我就想用个xampp集成环境,刚好在公司用的也是xampp,一般的扩展都集成了,不用再安装了。

          后来下了一个xampp,但是问题又出现了,之前能用的memcache扩展不能用了,我又重新安装,但都不行。犯的第一个错误是安装命令不对,PHP在xampp里面,所以得使用

          

    sh-32# /Applications/XAMPP/xamppfiles/bin/phpize
    sh-32# ./configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config --with-libevent=/usr/local/libevent-2.0.21

    phpize,php-config路径都变了,所以网上找的代码需要进行改动。这次好歹对./configure的参数--with,--prefix等有个了解了

        memcached扩展安装好之后,觉得可以大功告成了,怎料运行程序的时候页面打不开,返回码也没有,然后查看apache error_log,发现这个错误

       

    dyld: Symbol not found: _mmc_queue_pop
      Referenced from: /usr/local/memcache-3.0.8/memcache-3.0.8/modules/memcache.so
      Expected in: flat namespace
    
    [Fri Jan 16 23:40:46 2015] [notice] child pid 4317 exit signal Trace/BPT trap (5)
    dyld: lazy symbol binding failed: Symbol not found: _mmc_queue_pop
      Referenced from: /usr/local/memcache-3.0.8/memcache-3.0.8/modules/memcache.so
      Expected in: flat namespace
    

      网上搜索了一下,有人说是因为3.0.8是beta版本,得换个稳定版,我自己的本地PHP版本是5.63,所以也没细看就用了个高版本的memcached,所以出现这个错误。接下来换个稳定版的重新安装了一遍。http://pecl.php.net/package/memcached 里选择一个,运行项目的时候首页终于呈现在眼前了。随便点了其它页面,又出现错误。发现是 php_intl.dll 扩展没有安装。yii2.0高级版的yii::t()使用到了intl扩展。而xampp没有自带intl扩展。看了网上的教程都说将icudt38.dll扩展复制到apache的bin目录里。可我搜索时发现本地根本没有icu开头的扩展。也许xampp 的mac版有些不一样。最后查看这篇文章http://www.th7.cn/Program/php/201408/261919.shtml重新安装。

        

    /usr/local/php/bin/phpize
    ./configure --enable-intl --with-icu-dir=/usr/local/icu/ --with-php-config=/usr/local/php/bin/php-config

    这个路径要改成本地xampp的路径。

    sh-3.2# /Applications/XAMPP/xamppfiles/bin/phpize
    sh-32# ./configure --with-icu-dir=/usr/local/icu --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config
    
    sh-3.2# /Applications/XAMPP/xamppfiles/bin/php -m |grep intl
    Warning: PHP Startup: Unable to load dynamic library '/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20131226/php_intl.dll' - dlopen(/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20131226/php_intl.dll, 9): image not found in Unknown on line 0
    后来出现warning错误的原因是之前看了别的网站,将php.ini里面的php_intl.dll前的;号去掉了,这个不能去,在配置文件最后加个extension=intl.so就可以了。

    现在想想其它这些都不难,难就难在自己对./configure命令不熟,不知道用--with来关联依赖包,不知道安装php扩展的时候先phpize,这个一定要是你当前使用的php环境目录下的。其它的真的就没什么难的了。所以只会照着网上的步骤去安装,而不去追究为什么要这么安装,那将会多走很多弯路。

    部分框架安装完成之后,始终运行不了,调试的时候发现在memcache确认是安装了。我本地mac可以,线上centos6.5就是不行。最后发现是框架的原因,在httpd.conf里面的rewirte上面增加。

    httpd.conf两个地方都有

    opt/lampp/apache2/conf/httpd.conf
    /opt/lampp/etc/httpd.conf

    你要选择apache2/conf/httpd.conf,将网站访问地址和rewrite规则写进去。要是写错了,rewrite会卡爆你。

        SetEnv PROJECT_ENV "dev"
        SetEnv MEMCACHED_CLIENT "Memcache"
        SetEnv SRV_DB_HOST "127.0.0.1"
        SetEnv SRV_DB_PORT "3306"
        SetEnv SRV_DB_NAME "***"
        SetEnv SRV_DB_USER "*******"
        SetEnv SRV_DB_PASS "*******"
        SetEnv SRV_MEMCACHED_SERVERS "127.0.0.1:11211"

    终于完成了原来框架是找MEMCACHED_CLIENT来判断是memcache还是memcached。前后断断续续花了我两个月,我擦,找到原因的时候有点想哭的感觉。

  • 相关阅读:
    CSS去掉 a 标签点击后出现的虚线框
    AMD 和 CMD的区别
    sublime text常用快捷键
    jsonp详解
    JSON详解
    JS知识总结
    input 单选按钮radio 取消选中(转载)
    koala 编译scss不支持中文解决方案
    Spring事务的传播行为 @Transactional(转)
    Ubuntu下JDK+Tomcat+MySql环境的搭建
  • 原文地址:https://www.cnblogs.com/xuxiang/p/4243005.html
Copyright © 2020-2023  润新知