index.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. /**
  3. * 【Appserver端性能优化】:如果vue和appserver是不一样的域名,对于这种跨域的前端和后端交互,需要cros机制,具体您可以自己查阅
  4. * 原理为:第一次发送options请求,如果请求成功,获取服务端允许的请求类型,然后再发起具体的数据请求
  5. * 对于options请求,不涉及到数据,因此直接返回即可,因此下面加了下面的代码
  6. * 对于下面的设置的允许的值,是fecshop目前允许的,如果您添加了其他的,请在下面自行修改
  7. * 下面的cros的信息要和 @fecshop/app/appserver/modules/AppserverTokenController.php 这个文件里面的设置要一致。
  8. * 默认,下面是注释掉,您可以根据自己的情况,取消掉下面的注释,让options请求在index.php文件执行的时候直接返回,节省资源。
  9. */
  10. /*
  11. if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
  12. $cors_allow_headers = ['fecshop-uuid','fecshop-lang','fecshop-currency','access-token'];
  13. header('Access-Control-Allow-Origin: *');
  14. header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, ".implode(', ',$cors_allow_headers));
  15. header('Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS');
  16. exit;
  17. }
  18. */
  19. error_reporting(E_ALL & ~E_NOTICE & ~E_COMPILE_WARNING ); //除去 E_NOTICE E_COMPILE_WARNING 之外的所有错误信息
  20. //ini_set('session.cookie_domain', '.fancyecommerce.com'); //初始化域名,
  21. $http = ($_SERVER['SERVER_PORT'] == 443) ? 'https' : 'http';
  22. $homeUrl = $http.'://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['SCRIPT_NAME']), '\\/');
  23. /**
  24. * fecshop 使用合并配置(config)数组进行加速,true 代表打开。
  25. * 打开配置加速开关前,您需要执行 http://domain/index-merge-config.php 进行生成单文件配置数组。
  26. * 注意:打开后,当您修改了配置,都需要访问一次上面的链接,重新生成单文件配置数组,否则修改的配置不会生效
  27. * 建议:本地开发环境关闭,开发环境如果访问量不大,关闭也行,如果访问量大,建议打开
  28. *
  29. */
  30. $use_merge_config_file = false;
  31. defined('YII_DEBUG') or define('YII_DEBUG', true);
  32. defined('YII_ENV') or define('YII_ENV', 'dev');
  33. defined('FEC_APP') or define('FEC_APP', 'appserver');
  34. require(__DIR__ . '/../../vendor/autoload.php');
  35. require(__DIR__ . '/../../vendor/fancyecommerce/fecshop/yii/Yii.php');
  36. require(__DIR__ . '/../../common/config/bootstrap.php');
  37. require(__DIR__ . '/../config/bootstrap.php');
  38. if($use_merge_config_file){
  39. $config = require('../merge_config.php');
  40. }else{
  41. $config = yii\helpers\ArrayHelper::merge(
  42. require(__DIR__ . '/../../common/config/main.php'),
  43. require(__DIR__ . '/../../common/config/main-local.php'),
  44. require(__DIR__ . '/../config/main.php'),
  45. require(__DIR__ . '/../config/main-local.php'),
  46. # fecshop 公用配置
  47. require(__DIR__ . '/../../vendor/fancyecommerce/fecshop/config/fecshop.php'),
  48. # fecshop 入口配置
  49. require(__DIR__ . '/../../vendor/fancyecommerce/fecshop/app/appserver/config/appserver.php'),
  50. # thrid part confing
  51. # 第三方 公用配置
  52. require(__DIR__ . '/../../common/config/fecshop_third.php'),
  53. # 第三方 入口配置
  54. require(__DIR__ . '/../config/fecshop_third.php'),
  55. # 本地 公用配置
  56. require(__DIR__ . '/../../common/config/fecshop_local.php'),
  57. # 本地 入口配置
  58. require(__DIR__ . '/../config/fecshop_local.php')
  59. );
  60. }
  61. $config['homeUrl'] = $homeUrl;
  62. /**
  63. * yii class Map Custom
  64. */
  65. $yiiClassMap = yii\helpers\ArrayHelper::merge(
  66. require(__DIR__ . '/../config/YiiClassMap.php'),
  67. require(__DIR__ . '/../../common/config/YiiClassMap.php')
  68. );
  69. if(is_array($yiiClassMap) && !empty($yiiClassMap)){
  70. foreach($yiiClassMap as $namespace => $filePath){
  71. Yii::$classMap[$namespace] = $filePath;
  72. }
  73. }
  74. /**
  75. * Yii 重写block controller model等
  76. * 也就是说:除了compoent 和services,其他的用RewriteMap的方式来实现重写
  77. * 重写的类可以集成被重写的类
  78. */
  79. $yiiRewriteMap = yii\helpers\ArrayHelper::merge(
  80. require(__DIR__ . '/../config/YiiRewriteMap.php'),
  81. require(__DIR__ . '/../../common/config/YiiRewriteMap.php')
  82. );
  83. if(is_array($yiiRewriteMap) && !empty($yiiRewriteMap)){
  84. Yii::$rewriteMap = $yiiRewriteMap;
  85. }
  86. /**
  87. * 添加fecshop的服务 ,Yii::$service , 将services的配置添加到这个对象。
  88. * 使用方法:Yii::$service->cms->article;
  89. * 上面的例子就是获取cms服务的子服务article。
  90. */
  91. new fecshop\services\Application($config['services']);
  92. unset($config['services']);
  93. $application = new yii\web\Application($config);
  94. $application->run();