Linux安装PHP环境,详细步骤以及常见问题解决方案 | 您所在的位置:网站首页 › Php开发环境中需要的服务是 › Linux安装PHP环境,详细步骤以及常见问题解决方案 |
Linux安装PHP环境,详细步骤以及常见问题解决方案 1、下载安装包,这里安装php-7.4.22.tar.gz 2、上传到local并解压 cd php-7.4.22 3、安装必备依赖 (如果yum源需要更新可以运行 yum -y update) yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-devel libzip gcc-c++4、进行预编译 cd /usr/local/php-7.4.22 ./configure \ --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/lib \ --with-fpm-user=nginx \ --with-fpm-group=nginx \ --enable-fpm \ --enable-opcache \ --enable-inline-optimization \ --disable-debug \ --disable-rpath \ --enable-shared \ --enable-mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --enable-mysqlnd-compression-support \ --with-iconv-dir \ --with-zlib \ --enable-xml \ --disable-rpath \ --enable-bcmath \ --enable-shmop \ --enable-sysvsem \ --enable-inline-optimization \ --with-curl \ --enable-mbregex \ --enable-mbstring \ --enable-intl \ --enable-ftp \ --enable-gd \ --enable-gd-jis-conv \ --with-jpeg \ --with-freetype \ --with-openssl \ --with-mhash \ --enable-pcntl \ --enable-sockets \ --with-xmlrpc \ --with-zip \ --enable-soap \ --with-gettext \ --disable-fileinfo \ --with-pear \ --enable-maintainer-zts \ --with-ldap=shared \ --without-gdbm5、编译&&安装 make && make install 6、配置并启动 cd /usr/local/php/ #先进入安装目录 cp ./etc/php-fpm.conf.default ./etc/php-fpm.conf #配置文件 vim /usr/local/php/etc/php-fpm.conf 将;pid = run/php-fpm.pid 前面的;分号删掉 #配置文件 cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf cp /usr/local/php-7.4.22/php.ini-production /usr/local/php/lib/php.ini 修改php.ini配置文件 max_execution_time = 300 max_input_time = 600 post_max_size = 80M max_file_uploads = 20 date.timezone = Asia/Shanghai7、配置启动服务 1、添加php-fpm服务启动脚本 vim /lib/systemd/system/php-fpm.service [Unit] Description=php-fpm After=network.target [Service] Type=forking ExecStart=/usr/local/php/sbin/php-fpm ##需要注意修改自己的路径 ExecStop=/bin/pkill -9 php-fpm PrivateTmp=true [Install] WantedBy=multi-user.target2、 systemctl list-unit-files --type=service查看有没有php-fpm.service 如果没有就是用systemctl daemon-reload重新加载,在使用以上命令查看 3、添加开机自启 systemctl enable php-fpm.service ------------------------------------------------ 服务字段说明 [Unit]:服务的说明 Description:描述服务 After:描述服务类别 [Service]服务运行参数的设置 Type=forking是后台运行的形式 ExecStart为服务的具体运行命令 ExecReload为重启命令 ExecStop为停止命令 PrivateTmp=True表示给服务分配独立的临时空间 注意:[Service]的启动、重启、停止命令全部要求使用绝对路径 [Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3 ----------------------------------------------------------------------------- ******************第二种方法********************** //拷贝php-fpm脚本至/etc/init.d目录 cp /usr/local/php-7.4.22/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm //设置权限并启动php-fpm: chmod 755 /etc/init.d/php-fpm /etc/init.d/php-fpm start // php-fpm以服务的方式启动、停止和重启: ##vim /etc/init.d/php-fpm chkconfig --add /etc/init.d/php-fpm service php-fpm start service php-fpm stop service php-fpm reload 设置php-fpm开机自启: cp /usr/local/php-7.4.22/sapi/fpm/php-fpm.service /usr/lib/systemd/system systemctl enable php-fpm ****************************************************** 8、使用Nginx解析PHP 进入到nginx安装目录 cd /usr/local/nginx/ 修改配置文件 vim ./conf/nginx.conf server { listen 8088; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.php index.html index.htm; } 修改路径 把scripts改为 document_root location ~ \.php$ { root /usr/local/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } (1)增加index.php 在 /usr/local/nginx/html路径下增加index.php 文件进行测试 index.php内容如下 (2)测试与mysql数据库连接
9、添加环境变量 vim /etc/profile export PATH=$PATH:'/usr/local/php/bin/' source /etc/profile ############################################################################# 问题 ############################################################################# 问题: 1、如果提示No package sqlite3 found问题 先检查yum源 yum search sqlite 发现 sqlite-devel.x86_64 暂没有安装 执行 sudo yum install -y sqlite-devel.x86_64 2、 No package 'oniguruma' found 下载 oniguruma5php-6.9.8-1.el7.remi.x86_64.rpm oniguruma5php-devel-6.9.8-1.el7.remi.x86_64.rpm 这两个包(已下载在问题库包里) 安装这两个包 yum -y localinstall *.rpm 然后再进入PHP目录 运行config就不报这个错误了 3、报 configure: error: Cannot find ldap.h 解决办法: yum install openldap openldap-devel -y 4、报错:configure: error: Cannot find ldap libraries in /usr/lib 解决办法: cp -frp /usr/lib64/libldap* /usr/lib/ 5、报 checking for libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0... no configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met: No package 'libzip' found No package 'libzip' found No package 'libzip' found 解决方法: 检查是否安装过 libzip rpm -q libzip rpm -q libzip-devel 如果有则卸载它, yum remove libzip-devel libzip 然后下载libzip-1.2.0.tar.gz(此包已经下载,在\Linux部署PHP\问题处理文件包下) cd libzip-1.2.0 ./configure make make install export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/" 启动 #cd /usr/local/php/sbin/ # ./php-fpm #启动 #ps -ef|grep php-fpm #查看启动状态 ############################################################################# 脚本方式启动(备用) #!/bin/bash # php-fpm startup script for the php-fpm # php-fpm version:7.4.11-alpha6 # chkconfig: 2345 10 90 # description: php-fpm is very good # processname: php-fpm # pidfile: /var/run/php-fpm.pid # config: /usr/local/php/etc/php-fpm.conf php_command=/usr/local/php/sbin/php-fom php_config=/usr/local/php/etc/php-fpm.conf php_pid=/usr/local/php/var/run/php-fpm.pid RETVAL=0 prog="php-fpm" #start function php_fpm_start() { /usr/local/php/sbin/php-fpm } start(){ if [ -e $php_pid ] then echo "php-fpm already start..." exit 1 fi php_fpm_start } stop(){ if [ -e $php_pid ] then parent_pid=`cat $php_pid` all_pid=`ps -ef | grep php-fpm | awk '{if('$parent_pid' == $3){print $2}}'` for pid in $all_pid do kill $pid done kill $parent_pid fi exit 1 } restart(){ stop start } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart) stop start ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $prog {start|stop|restart|status}" exit 1 esac exit $RETVAL |
CopyRight 2018-2019 实验室设备网 版权所有 |