之前在测试一段PHP程序时,总是报找不到PHP类文件,当前因为需要着急解决问题,就把文件直接引入从而解决了问题,今天看了一下,因为文件里面加载了vendor,而vendor目录下面在autoload_real.php引入的其它文件autoload_classmap.php,autoload_namespaces.php,autoload_psr4.php这些文件里都有绝对路径(因为是composer生成的),导致的加载不上。于是要解决就必须重新composer,以更新路径。centos下安装composer,注(我这里也对比发现了程序里用的是老一代的vendor,新一代的vendor都的路径$vendorDir和$baseDir都是通过绝对目录得来的,这样路径变更就不会同时涉及修改几个文件内容)。本文地址:http://www.04007.cn/article/575.html,未经许可,不得转载.
[root@123 download]# curl -sS https://getcomposer.org/installer | php All settings correct for using Composer Downloading... Composer (version 1.7.3) successfully installed to: /opt/download/composer.phar Use it: php composer.phar [root@123 download]# mv composer.phar /usr/local/bin/composer [root@123 download]# composer -V Do not run Composer as root/super user! See https://getcomposer.org/root for details Composer version 1.7.3 2018-11-01 10:05:06从上面可以看到,安装很简单,基本就是下载一个文件,然后执行命令就看到结果了。但有一个提示:Do not run Composer as root/super user! See https://getcomposer.org/root for details,意思是不要在root超级用户下执行,所以就更换一个用户吧,如下,就不会报这个提示了:本文地址:http://www.04007.cn/article/575.html,未经许可,不得转载.
[root@123 download]# useradd kermit [root@123 download]# passwd kermit Changing password for user kermit. New password: BAD PASSWORD: it is too simplistic/systematic BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully. [root@123 download]# su kermit [kermit@123 download]$ [kermit@123 download]$ composer -V Composer version 1.7.3 2018-11-01 10:05:06 #进入目录招待composer install安装即可 [root@123 queue]# composer install Do not run Composer as root/super user! See https://getcomposer.org/root for details Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 0 installs, 1 update, 0 removals - Updating phpmailer/phpmailer dev-master (3ea8425 => 028acee): The package has modified files: M docs/generatedocs.sh M language/phpmailer.lang-am.php M test/fakepopserver.sh M test/fakesendmail.sh M test/runfakepopserver.sh..... Discard changes [y,n,v,d,s,?]? y Checking out 028aceea3d Writing lock file Generating autoload file #然后看一下composer下的主要涉及路径的文件已经更新: [root@123 queue]# ll vendor/composer total 44 -rw-r--r-- 1 root root 147 Nov 26 10:32 autoload_classmap.php -rw-r--r-- 1 root root 222 Nov 26 10:32 autoload_namespaces.php -rw-r--r-- 1 root root 280 Nov 26 10:32 autoload_psr4.php -rw-r--r-- 1 root root 1762 Nov 26 10:32 autoload_real.php -rw-r--r-- 1 root root 1480 Nov 26 10:32 autoload_static.php -rw-r--r-- 1 root root 13459 Nov 26 10:32 ClassLoader.php -rw-r--r-- 1 root root 3750 Nov 26 10:32 installed.json -rw-r--r-- 1 root root 1070 Nov 26 10:32 LICENSEcomposer下的主要涉及路径的文件已经更新,再执行代码就能正常加载类文件了。上述中Discard changes [y,n,v,d,s,?]? 表示是否放弃已经做过的一些修改,这里要注意,如果你composer里的代码有些重要的地方经过了自己修改处理,这里就需要填写N了,我这里没有什么重要的东西,估计也就是查看代码时不小心导致了一些文件的小变更,所以就放弃更改。
对于我这里碰到的问题,可能还有一个更好的解决办法,这是一开始我没有想到的,composer有一个config命令,这个可以配置很多选项,其中有涉及目录的两项,[vendor-dir]和[bin-dir],把这两个目录进行更改后,composer里的所有和目录有关的代码应该就会自动更改,当然这个我也没有尝试。应该是可以的。本文地址:http://www.04007.cn/article/575.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/575.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |