最近,公司打算更新自己网站,计划用joomla来做CMS,并且使用flex来做模板。
于是,根据要求,按部就班的将joomla 3.9安装了起来。 已运行,joomla就提示 PHP版本过低,可能存在安全隐患.
查了一下系统,centos7 yum默认装的php 是5.4,是低了点。
于是,按照网上的攻略,更新yum源,升级到php7.2.
运行joomla,一切正常。安装flex模板。看起来似乎是没有问题。
可是,如果真的没有问题的话,我就不用写这篇文章了不是?
问题就在于装完之后,访问前台首页,居然出现了错误:0 找不到对应的页面。
我勒个去,这是啥问题。
于是开始troubleshooting, 先是查了httpd的日志,没有用,再查php error_log 也没有什么有用的。
最后没办法,只好手工编辑flex的index.php 加上了一个大大的try-catch , 果然,抓到了罪魁祸首:
RuntimeException: The GD extension for PHP is not available
于是,估计是php缺少了GD这个组件,去查了一下,发现奇怪的是GD居然已经安装了。 那么看来应该是那儿配置的问题的。
接着找资料,看看怎么配置。结果很多资料都说是 修改php.ini 。试了一下,然而并没有用。
随后用phpinfo() 把php的信息打印了出来,看看能不能发现什么,结果发现在php的配置信息里面有一个extension_dir的目录,指向的是/usr/lib64/php/modules 这个目录。 进去看了一下,发现果然没有gd的相关文件。可是我明明装了gd了呀。于是搜索一番,发现,GD居然放在/opt/remi/php72/root/usr/lib64/php/modules下面,而且除了GD之外,还有其他的一些扩展库。看来是php72改了扩展库的存储位置了。
于是修改php.ini中的extension_dir 指向 /opt/remi/php72/root/usr/lib64/php/modules 重启httpd, 结果果然是
错误依旧,没有解决。
于是,再次查看php的配置,又发现一行
can this dir for additional .ini files | /etc/php.d |
紧跟着看到下面的Additional .ini files parsed 配置里面没有gd相关的ini. 看样子又是配置文件的问题了。
继续,搜索磁盘,找到了/etc/opt/remi/php72/php.d/20-gd.ini 这个文件,懒得再改配置了,直接把这个ini copy到 /etc/php.d下面,再次重启httpd
结果,这次
终于解决了问题。 joomula主页能够正常访问了。
虽然觉得应该把ini文件的路径指向/etc/opt/remi/php72/php.d/会更好,不过暂时没找到修改的办法,后续解决吧.