分类存档: php

PEAR package PHP_Archive not installed: generated phar will require PHP’s phar extension be enabled.

Linux下编译安装PHP时,make后出现:

PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.

解决办法:

先不理它,make install之后,运行以下命令:

/php安装目录/bin/pear install channel://pear.php.net/PHP_Archive-0.12.0
downloading PHP_Archive-0.12.0.tgz ... 
Starting to download PHP_Archive-0.12.0.tgz (86,179 bytes) 
.....................done: 86,179 bytes 
install ok: channel://pear.php.net/PHP_Archive-0.12.0

再次make,不再提示。

解决了一个php编译的问题

最近几天尝试了一下PHP 7.2.0 Alpha 1,在linux编译安装时,发现php.ini及extensions路径不对,都成了默认的PHP 7.1的路径,如下表:

Configuration File (php.ini) Path /lnmp/php7.2
Loaded Configuration File /lnmp/php/php.ini
Scan this dir for additional .ini files /lnmp/php7.2/lib/php/extensions
Additional .ini files parsed /lnmp/php/lib/php/extensions/opcache.ini

尝试重新编译,无效,删掉/lnmp/php7.2也无效,昨天折腾一天都没结果。

今天晚上突然想到是不是源码目录的问题?于是删掉PHP 7.2.0的源码目录,重新解压源码,再次configure;make;make install,问题解决。

原因分析:

貌似第一次configure;make;make install时,使用了–prefix=/lnmp/php,后来发现不对,要和原来编译的PHP 7.1分开,于是重新configure,改成了–prefix=/lnmp/php7.2。猜测是源码在configure时,prefix信息没有被修改过来,造成此问题。

Gentoo安装php7

昨天php7正式发布了,今天发现Gentoo官方源里面已经有了php7的ebuild,于是安装尝试一下。安装过程如下:
1、解除php7的mask状态:

echo "dev-lang/php" >> /etc/portage/package.unmask

2、添加全局use:

echo 'PHP_TARGETS="php7-0"' >> /etc/portage/make.conf

3、编译安装:

emerge php

4、设置php版本为7

eselect php set fpm 2

5、现在是php7与php5共存,有两个命令还是指向php5的,改成php7

rm /usr/bin/phpize
ln -s /usr/lib64/php7.0/bin/phpize /usr/bin/phpize
rm /usr/bin/php-config
ln -s /usr/lib64/php7.0/bin/php-config /usr/bin/php-config

6、启动php

systemctl start php-fpm@7.0.service

发现有出错信息,查看一下,原来是默认日志路径有问题(估计Gentoo官方很快会修复),改一下:

/etc/php/fpm-php7.0/php-fpm.conf

中的

;error_log = log/php-fpm.log

去掉前面的;,并且改成

error_log = /var/log/php-fpm.log

7、再次启动,成功!

openSUSE中安装nginx+mysql(mariadb)+php环境

昨天装了个openSUSE13.1,发现它对许多软件的处理方式和其他linux有一些不同,而且也有自己独特的一些地方。折腾了好长时间才配置出nginx+mysql(mariadb)+php环境。

注:没有使用图形界面来安装,用yast或zypper来安装所有软件包。

1、安装软件包(想安装mysql,把下面的mariadb换成mysql即可):

yast -i nginx mariadb mariadb-client php5-fpm php5-fcgi php5-gd php5-mysql php5-mbstring

2、启动环境并配置开机启动
启动:

systemctl start nginx.service(或者service nginx start)
systemctl start php-fpm.service(或者service php-fpm start)

开机启动:

systemctl enable nginx.service
chkconfig mysql on
chkconfig php-fpm on

3、配置数据库:

/usr/bin/mysql_install_db
systemctl start mysql.service
mysqladmin -u root password "密码"

4、配置php-fpm:

cp /etc/php5/fpm/php-fpm.conf.default /etc/php5/fpm/php-fpm.conf
vi /etc/php5/fpm/php-fpm.conf

将error_log前面的注释去掉,并改为/var/log/php-fpm.log

ln -s /etc/php5/fastcgi/php.ini /etc/php5/fpm/php.ini
chmod 777 /var/lib/php5

5、配置nginx:

将其中的配置修改成如下形式即可:

root /home/linux/www;
index index.htm index.html index.php;

location / {
try_files $uri $uri/ /index.php;
}

location ~.php$ {
try_files $uri = 404;
include fastcgi.conf;
fastcgi_pass localhost:9000;
}

参考:http://hi.baidu.com/xchinux/item/fbe1ef1b4b0c0d0a8fbde44c

Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.

手动安装phpmyadmin时,出现如下错误:

Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.

解决办法:

mkdir -p /var/lib/php/session
chmod 777 -R /var/lib/php/session

phpmyadmin禁用suhosin的提示

如果服务器上安装了suhosin,在打开phpmyadmin时,出现如下提示:

链接表的额外特性尚未激活。要查出原因,请点击此处。
使用配置文件中定义的控制用户连接失败。
服务器上运行了 Suhosin。请先查看文档中是否有类似的情况。

解决办法:编辑配置文件 config.inc.php,添加以下语句即可:

$cfg['SuhosinDisableWarning']='true';

phpmyadmin升级到3.5的一些变化

今天把phpmyadmin升级到了3.5.0,发现许多地方发生了变化:

Welcome to phpMyAdmin 3.5.0; here are the major new features:

* browse-mode improvements
** grid editing
** remember recent tables
** remember last sort order by table
** flexible column width
** reorder columns
** more compact navigation bar
* AJAXification of many operations
* reorganised server status page, with server monitoring
* improved support for stored routines, events and triggers
* openGIS support
* zoom-search in table search
* Drizzle support
* improved ENUM/SET editor

在使用过程中发现有以下几个变化在配置时需要注意:

1、要求安装mysqli扩展,原来3.4时没有要求;

2、pmd、contrib、scripts目录被删除,出现了一个examples目录,新建phpmyadmin的数据库的文件create_tables.sql移动到了examples目录;

3、配置文件中增加了$cfg[‘Servers’][$i][‘recent’]和$cfg[‘Servers’][$i][‘table_uiprefs’] 两个参数。

CodeIgniter框架

官方网站:http://codeigniter.com/

中文网站:http://codeigniter.org.cn/

CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为 PHP 程序员建立功能完善的 Web 应用程序。如果你是一个使用共享主机,并且为客户所要求的期限而烦恼的开发人员,如果你已经厌倦了那些傻大笨粗的框架

那么 CodeIgniter 就是你所需要的,如果…

  • 你想要一个小巧的框架。
  • 你需要出色的性能。
  • 你需要广泛兼容标准主机上的各种 PHP 版本和配置。
  • 你想要一个几乎只需 0 配置的框架。
  • 你想要一个不需使用命令行的框架。
  • 你想要一个不需坚守限制性编码规则的框架。
  • 你对 PEAR 这种大规模集成类库不感兴趣。
  • 你不希望被迫学习一门模板语言(虽然可以选择你喜欢的模板解析器)。
  • 你不喜欢复杂,热爱简单。
  • 你需要清晰、完善的文档。

Notice: Array to string conversion in phpmyadmin/libraries/Error.class.php on line 179

升级到php5.4的另外一个问题,phpmyadmin无法登录了,出现如下提示:

Notice: Array to string conversion in phpmyadmin/libraries/Error.class.php on line 179

phpmyadmin版本是3.4.7,上述文件代码:

public function getHash()
{
if (null === $this->_hash) {
$this->_hash = md5(
$this->getNumber() .
$this->getMessage() .
$this->getFile() .
$this->getLine() .
$this->getBacktrace()
);//第179行
}
return $this->_hash;
}

Fatal error: Call to undefined function session_unregister()

原来在php5.3中无任何问题的代码到了php5.4中却出现如下错误:

Fatal error: Call to undefined function session_unregister()

发现出现错误的语句是:

session_unregister("username");

改成以下语句后问题解决,原因不清楚:

$_SESSION['username']='';
第 1 页,共 2 页12