如题,笔者发现TP5.1以上弃用了vendor等功能,改用命名空间,需要用composer来引入,
比如: composer require phpoffice/phpexcel
但是,在PHP7.2以上,官方弃用了mcrypt扩展,就会提示诸如:
PHP Warning: PHP Startup: Unable to load dynamic library 'mcrypt.so' (tried: /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/mcrypt.so (/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/mcrypt.so: cannot open shared object file: No such file or directory), /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/mcrypt.so.so (/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/mcrypt.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
所以,特么该怎么样呢?
通过百度,我发现有人说可以用require_once,但是实际笔者发现并不可取,后来,笔者发现几个方法可以解决,
1.改变composer
既然需要composer,那我就换个项目,换个环境,composer一下,然后改下composer一下不就得了.
或者,我们可以
手动修改autoload部分,然后重新生成.
1.1 psr-4规范
"autoload": {
"psr-4" : {
"phpexcel\\" : "vendor/phpexcel"
}
},
1.2 psr-0规范
"autoload": {
"psr-0" : {
"phpexcel\\" : "vendor/phpexcel"
}
},
然后再运行下 composer dumpautoload
就好了
该命令将composer.json中的autoload部分更新到相应的命名空间配置文件。
2.1 psr-4
// vendor/composer/autoload_psr4.php
return array(
/ ***** /
'phpexcel\\' => array($baseDir . 'vendor/phpexcel'),
);
2.2 psr-0
// vendor/composer/autoload_namespace.php
return array(
/ ***** /
'phpexcel' => array($baseDir . 'vendor/phpexcel'),
);
2.使用include引入phpexcel
//引入phpexcel
include './vendor/phpexcel/PHPExcel.php';
include './vendor/phpexcel/PHPExcel/Writer/Excel2007.php';
笔者使用的第二种方法,亲测可用.