phplinuxnginx
# yum remove httpd* php*
增加額外資源庫
默認情況下,CentOS的官方資源是沒有php-fpm的, 但我們可以從Remi的RPM資源中獲得,它依賴於EPEL資源。我們可以這樣增加兩個資源庫:
[plain] view plain
# yum install yum-priorities -y
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
❷ linux下怎麼讓nginx支持php
安裝 PHP-FPM
1. 開始安裝 Nginx 和 PHP-FPM 之前,你可能需要卸載系統中以前安裝的 Apache 和 PHP。
1
yum erase php*
2
or
3
yum remove httpd* php* #這個命令是刪除不幹凈的
4
yum remove php-cli php-common php #刪除
重新安裝 PHP:
1
yum --skip-broken install php53
2. CentOS 6.2/6.1/6/5.8 下安裝Remi源:
1
## Remi Dependency on CentOS 5 and Red Hat (RHEL) 5 ##
2
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
3
4
## CentOS 5 and Red Hat (RHEL) 5 ##
5
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
3. 安裝 PHP-FPM:
1
yum --enablerepo=remi,remi-test install nginx php php-fpm php-common
2
or
3
yum --enablerepo=remi install php53 php-fpm
4. 安裝完畢之後啟動 PHP-FPM:
1
/etc/init.d/php-fpm start
2
## OR ##
3
service php-fpm start
5. 設置Nginx & PHP-FPM開機自啟動:
1
chkconfig --add nginx
2
chkconfig --levels 235 nginx on
3
chkconfig --add php-fpm
❸ 如何確定 linux 內的 php nginx mysql 進程是否運轉正常
1. php 的測試:
使用 yum 命令安裝 php
yum install php*
然後瀏覽器訪問伺服器 IP:
❹ LINUX+NGINX下的PHP shell_exec()函數執行linux命令 2019-08-08
LINUX+NGINX下的PHP shell_exec()函數執行linux命令
環境說明
手燃衫頭有一台linux的測試伺服器,最近因為業務需要,需要通過php訪問另一台伺服器去執行某些命令。
由於另一台伺服器已經對這台伺服器開了私鑰,所以在終端上是可以直接執行命令而不需要輸入密碼的。
問題
PHP無法使用exec命令,沒有任何返回值。
解決途徑
1.php.ini的配置有問題。
由於php是7.0以上的版本,取消了安全模式,所以考慮PHP.ini文件配置。
打開php配置文件,裡面有一行disabel_function的值,此處記錄了禁止運行的函數,在裡面講exec和shell_exec,system等函數刪除。
2.許可權問題
修改以後PHP可以運行部分命令了,但是部分外部程序和命令仍然不能運行。使用sudo返回失敗。
於是運行「whoami」查看,環境下php-frm的運行角色鎮段唯是www。
於是修改sudoers文件。
vi /etc/sudoers
將www添加到
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
下面:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
www ALL=(ALL) NOPASSWD:ALL
然後找到Default requiretty這一行,把他注釋掉
# Default requiretty
ps:意思就是sudo默認需要tty終端,注釋掉就可以在後台執行了.
重啟nginx和php-fpm
service nginx restart
service php-fpm restart
這樣,PHP就可以在需要御培執行外部命令的時候使用sudo利用root身份執行命令,而不會報錯或者執行失敗了!
❺ 如何在linux下配置nginx支持php
需要。
如果是nginx+php配置,也可以通過查找php執行路徑
ps
aux
|
grep
php
如,路徑為
/usr/local/nginx/sbin/php-fpm
然後執行以下命令
/usr/local/nginx/sbin/php-fpm
-i
|
grep
「Loaded
Configuration
File」
即可看到php載入的配置文件
❻ 如何在Linux下使Nginx和Apache共存,並同時支持PHP
1、mysql,參考linux下源碼安裝mysql
2、php,參考linux下源碼安裝nginx + php筆錄
編譯參數:./configure --prefix=/usr/local/php --with-gd --enable-gd-native-ttf --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-mysql=/usr/local/mysql --enable-fastcgi --enable-fpm --with-mysqli=/usr/local/mysql/bin/mysql_config
3、nginx,參考linux下源碼安裝nginx + php筆錄
4、apache,
編譯參數:./cigure --prefix=/usr/local/apache2 --enable-so --enable-mods-shared=most
查看以前的編譯選項(如果以前安裝過的話):cat /usr/local/apache2/build/config.nice
http.conf添加以下兩行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
虛擬主機設置:
<VirtualHost 192.168.42.129>
ServerAdmin [email protected]
DocumentRoot /var/www/other-test
ServerName other-test.com
ErrorLog logs/www.other-test.com-error_log
CustomLog logs/www.other-test.com-access_log common
<Directory "/var/www/other-test">
Options Indexes FollowSymlinks MultiViews
AllowOverride None
DirectoryIndex index.html index.php
Order allow,deny
Allow from All
</Directory>
</VirtualHost>
5、重新編譯、安裝php是能夠在apache上運行,編譯參數:./configure --prefix=/usr/local/php --with-gd --enable-gd-native-ttf --with-freetype-dir --with-jpeg-dir --with-png-dir --with-mysql=/usr/local/mysql --with-zlib --enable-fastcgi --enable-fpm --with-apxs2=/usr/local/apache2/bin/apxs --with-mysqli=/usr/local/mysql/bin/mysql_config
cp php.ini-dist /usr/local/php/lib/php.ini
重啟apache,如果發現正斗錯誤「cannot restore segment prot after reloc: Permission denied」解決方案舉判磨:
1. chcon -t /usr/local/apache2/moles/libphp5.so
2. #vi /etc/sysconfig/selinux file 或者用 #gedit /etc/沖唯sysconfig/selinux file 修改SELINUX=disabled 重啟
❼ 一台機linux器裝nginx一台裝PHP,怎麼能夠用nginx訪問php頁面
nginx通過fastcgi模式調用另一台的php解釋器,然後將php程序執行後的結果傳給nginx,nginx再輸出就可以了
❽ linux怎麼快速安裝nginx和php,不用安裝資料庫
Linux下如果要搭建nginx和php環境,需要安裝三個軟體包:
nginx,php,php-fpm
比如說如果是centos的話:
yuminstallnginxphpphp-fpm
可能軟體包名有差別,這個查查就知道了。
然後配置nginx,修改nginx.conf,如果用sock就這樣寫,如果是埠就些埠:
location~.php${
fastcgi_passunix:/var/run/php-fpm/php-fpm.sock;
fastcgi_indexindex.php;
includefastcgi.conf;
}
然後啟動服務,以centos7為例:
systemctlstartnginx
systemctlstartphp-fpm
❾ Linux系統中設置多版本PHP共存配合Nginx伺服器使用
應用環境
LNMP的環境,當前PHP版本5.3.8,遇到一個應用需求只支持PHP
5.2.x,又希望保持現有應用還是用PHP
5.3.8。也就是說需要兩個版本的PHP同時存在,供nginx根據需要調用不同版本。
思路
Nginx是通過PHP-FastCGI與PHP交互的。而PHP-FastCGI運行後會通過文件、或本地埠兩種方式進行監聽,在Nginx中配置相應的FastCGI監聽埠或文件即實現Nginx請求對PHP的解釋。
既然PHP-FastCGI是監聽埠和文件的,那就可以讓不同版本的PHP-FastCGI同時運行,監聽不同的埠或文件,Nginx中根據需求配置調用不同的PHP-FastCGI埠或文件,即可實現不同版本PHP共存了。
配置記錄
下面記錄簡單的配置流程,基於已經安裝了lnmp的debian環境。當前版本的PHP是5.3.8,位於/usr/local/php。
1.下載PHP-5.2.14及相關的FPM、autoconf組件:
mkdir
~/php5.2
cd
~/php5.2
wget
-c
http://museum.php.net/php5/php-5.2.14.tar.gz
wget
-c
http://php-fpm.org/downloads/php-5.2.14-fpm-0.5.14.diff.gz
2.解壓PHP-5.2.14,並打上PHP-FPM的補丁:
tar
zxvf
php-5.2.14.tar.gz
gzip
-cd
php-5.2.14-fpm-0.5.14.diff.gz
|
patch
-d
php-5.2.14
-p1
3.如果你已經通過lnmp安裝,應該已經安裝好了autoconf,如果沒有,請自行下載並編譯autoconf-2.13,然後設置autoconf環境變數:
export
PHP_AUTOCONF=/usr/local/autoconf-2.13/bin/autoconf¬
export
PHP_AUTOHEADER=/usr/local/autoconf-2.13/bin/autoheader
3.編譯安裝PHP-5.2.14在新的路徑(/usr/local/php-5.2.14)下,注意–prefix、–with-config-file-path的路徑,並且打開fastcgi和fpm選項:
cd
php-5.2.14/
./buildconf
--force
./configure
--prefix=/usr/local/php-5.2.14
--with-config-file-path=/usr/local/php-5.2.14/etc
--with-mysql=/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
--enable-fastcgi
--enable-fpm
make
ZEND_EXTRA_LIBS='-liconv'
make
install
4.設置/usr/local/php-5.2.14/etc/php-fpm.conf,監聽埠:
<value
name="listen_address">127.0.0.1:9001</value>
或者監聽文件:
<value
name="listen_address">/path/to/unix/socket</value>
其他參數根據伺服器環境和需求自行定製。
5.啟動php-fpm,以後可以通過php-fpm進行管理:
/usr/local/php-5.2.14/sbin/php-fpm
start
字php5.3.3後,php已經將php-fpm繼承到php中,而且內置的php-fpm默認不支持(start|stop|reload)的平滑啟動參數,需要使用官方源代碼中提供的啟動腳本來控制:
cp
-f
(php
-5.3.x-source-dir)/sapi/fpm/init.d.php-fpm
/etc/init.d/php-fpm
chmod
755
/etc/init.d/php-fpm
/etc/init.d/php-fpm
start
php-fpm支持的操作:
start,啟動PHP的FastCGI進程。
stop,強制終止PHP的FastCGI進程。
quit,平滑終止PHP的FastCGI進程。
restart,
重啟PHP的FastCGI進程。
reload,
重新載入PHP的php.ini。
logrotate,
重新啟用log文件。
5.3.3的php-fpm腳本支持的操作:start|stop|force-quit|restart|reload|status
6.配置好PHP-5.2.14的php.ini,重新載入生效:
vi
/usr/local/php-5.2.14/etc/php.ini
/usr/local/php-5.2.14/sbin/php-fpm
reload
7.修改nginx配置,對需要的服務配置使用PHP-5.2.14:
location
~
.*.(php|php5)?$
{
fastcgi_pass
127.0.0.1:9001;
fastcgi_index
index.php;
include
fcgi.conf;
}
8.記錄一下自己編譯php5.5.10使用的配置
./configure
--prefix=/usr/local/php-5.5.10
--with-config-file-path=/usr/local/php-5.5.10/etc
--with-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-bz2
--with-curl=/usr/bin
--enable-ftp
--enable-sockets
--disable-ipv6
--with-gd
--with-jpeg-dir=/usr/local
--with-png-dir=/usr/local
--with-freetype-dir=/usr/local
--enable-gd-native-ttf
--with-iconv-dir=/usr/local
--enable-mbstring
--enable-calendar
--with-gettext
--with-libxml-dir=/usr/local
--with-zlib
--with-pdo-mysql=mysqlnd
--enable-dom
--enable-xml
--enable-fpm
--with-libdir=lib64
--with-mcrypt=/usr/bin
--enable-zip
--enable-soap
--enable-mbstring
--with-gd
--with-openssl
--enable-pcntl
--with-xmlrpc
--enable-opcache
❿ linux nginx 無法執行php文件
為以前沒有接觸過nginx ,所以查了一天,查處原因有二:
一、網站根目錄
默認是在 /usr/local/nginx/html文件
配置在
location / {
root /home/www/wwwroot;
index index.html index.htm;
}
二、修改文件中對應的php配置部分
location ~ \.php$ {
root /home/www/wwwroot;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
特別需要注意的是:fastcgi_param這個參數默認的是$fastcgi_script_name;最好改為$document_root$fastcgi_script_name;我在實際配置中出現了php找不到需要解析文件而返回404或者500錯誤的問題。所以最好是帶上網站根目錄的路徑變數$document_root