linuxphp參數
有的linux版本給出了一個LAMP(linux+apache+mysql+php),既然要學php,就把apache,mysql也一起裝上吧,apache是伺服器軟體,mysql是資料庫,php主要是在伺服器端應用的
sudo tasksel
裡面給出了一系列的軟體安裝,能簡單的幫你弄好,/var/www是根目錄,以後寫好的php文檔放在這裡面就行,用瀏覽器http://localhost/或http://127.0.0.1/後面跟相應的文件名就可以了
『貳』 如何通過Linux命令行使用和運行PHP腳本
在 Linux 下執行 php 腳本時通常是可以使用以下命令:#/usr/local/php/bin/php test.php
為簡化輸入可把此php執行程序 到系統命令目錄下:
#cp /usr/local/php/bin/php /usr/sbin/
驗證:輸入以下命令,如正確獲取 php 版本,說明操作成功。
#php -v
這樣,以後再執行PHP腳本時可直接採用以下輸入方式即可。
#php a.php
『叄』 linux源碼包安裝php中的./configure選項詳解
1、Linux下,默認是在/usr/local/bin/,假如你設置--prefix=/usr/local/php那麼就在/usr/local/php/bin/
2、sbin道理相同。sbin的意思就是server bin
3、EPREFIX沒用過
4、如果要用2套版本,用prefix區分開不同的安裝目錄。php.ini默認在/usr/local/php/etc/
『肆』 linux下安裝php編譯參數
在Linux下安裝PHP,源代碼方式安裝,總需要配置很多參數。這里列出常用配置參數,並詳細用中文解釋說明了。給大家一些參考./configure
--prefix=/usr/local/php
php
安裝目錄
--with-apxs2=/usr/local/apache/bin/apxs
--with-config-file-path=/usr/local/php/etc
指定php.ini位置
--with-MySQL=/usr/local/mysql
mysql安裝目錄,對mysql的支持
--with-mysqli=/usr/local/mysql/bin/mysql_config
mysqli文件目錄,優化支持
--enable-safe-mode
打開安全模式
--enable-ftp
打開ftp的支持
--enable-zip
打開對zip的支持
--with-bz2
打開對bz2文件的支持
--with-jpeg-dir
打開對jpeg圖片的支持
--with-png-dir
打開對png圖片的支持
--with-freetype-dir
打開對freetype字體庫的支持
--without-iconv
關閉iconv函數,種字元集間的轉換
--with-libXML-dir
打開libxml2庫的支持
--with-xmlrpc
打開xml-rpc的c語言
--with-zlib-dir
打開zlib庫的支持
--with-gd
打開gd庫的支持
--enable-gd-native-ttf
支持TrueType字元串函數庫
--with-curl
打開curl瀏覽工具的支持
--with-curlwrappers
運用curl工具打開url流
--with-ttf
打開freetype1.*的支持,可以不加了
--with-xsl
打開XSLT
文件支持,擴展了libxml2庫
,需要libxslt軟體
--with-gettext
打開gnu
的gettext
支持,編碼庫用到
--with-pear
打開pear命令的支持,php擴展用的
--enable-calendar
打開日歷擴展功能
--enable-mbstring
多位元組,字元串的支持
--enable-bcmath
打開圖片大小調整,用到zabbix監控的時候用到了這個模塊
--enable-sockets
打開
sockets
支持
--enable-exif
圖片的元數據支持
--enable-magic-quotes
魔術引用的支持
--disable-rpath
關閉額外的運行庫文件
--disable-debug
關閉調試模式
--with-mime-magic=/usr/share/file/magic.mime
魔術頭文件位置
CGI方式安裝才用的參數
--enable-fpm
打上php-fpm
補丁後才有這個參數,cgi方式安裝的啟動程序
--enable-fastcgi
支持fastcgi方式啟動php
--enable-force-cgi-redirect
同上
,幫助里沒有解釋
--with-ncurses
支持ncurses
屏幕繪制以及基於文本終端的圖形互動功能的動態庫
--enable-pcntl
freeTDS需要用到的,可能是鏈接mssql
才用到
mhash和mcrypt演算法的擴展
--with-mcrypt
演算法
--with-mhash
演算法
--with-gmp
--enable-inline-optimization
--with-openssl
openssl的支持,加密傳輸時用到的
--enable-dbase
--with-pcre-dir=/usr/local/bin/pcre-config
perl的正則庫案安裝位置
--disable-dmalloc
--with-gdbm
dba的gdbm支持
--enable-sigchild
--enable-sysvsem
--enable-sysvshm
--enable-zend-multibyte
支持zend的多位元組
--enable-mbregex
--enable-wddx
--enable-shmop
--enable-soap
『伍』 linux怎麼查看php安裝編譯參數
1、Linux下,默認是在/usr/local/bin/,假如你設置--prefix=/usr/local/php那麼就在/usr/local/php/bin/
2、sbin道理相同。sbin的意思就是server
bin
3、EPREFIX沒用過
4、如果要用2套版本,用prefix區分開不同的安裝目錄。
『陸』 linux為什麼修改php配置參數max_execution_time不起作用
您是不是用vps的?如果是我也遇到問題,我用vultr的時候也是出現這樣的情況,我用php鏈接資料庫,一秒鍾寫一條數據,用while循環,發現只執行了89秒,多次嘗試都發現還是這樣。然後我有一次用別的伺服器,發現這個長腳本沒問題。後來我看到別的論壇說,這個是因為vps廠商限制了長腳本的運行,避免消耗母機的資源。
『柒』 linux下php如何配置
1、MySQL的安裝
在MySQL官網下載MySQL的安裝文件MySQL-server-4.0.20-0.i386.rpm,執行下面的命令完成MySQL的安裝。
rpm -ivh MySQL-server-4.0.20-0.i386.rpm
在沒有設置MySQL密碼的情況下,通過以下命令測試MySQL是否安裝成功。
mysql -u root
出現類似welcome to the mysql mointor. commands end with;or \g的字樣,說明安裝成功。
2、Apache的安裝
從Apache的官網下載UNIX版本的壓縮包,以httpd-2.0.52.tar.gz為例,假設資源包放在/usr/local/src下,進入這個目錄後解壓縮,命令如下:
cd /usr/local/src
tar -zxvf httpd-2.0.52.tar.gz
解壓縮後,進入目錄httpd-2.0.52,執行以下命令:
./configure --prefix=/usr/local/apache2 --enable--mole=so
其中--prefix=/usr/local/apache2用來指定Apache的安裝目錄。接下來進行編譯,執行一下命令完成安裝。
make
mae install
3、配置PHP開發環境的安裝
1)從PHP官網下載php5.1.4.tar.gz的壓縮包,解壓縮該文件包,命令如下:
tar -zxf php5.1.4.tar.gz
2)轉到解壓縮後的目錄,執行以下命令完成PHP安裝目錄等相關配置:
./configure --prefix=/usr/local/php -with-mysql=/var/lib/mysql
3)接著編譯PHP,命令如下:
make
make install
4)復制當前目錄下的文件PHP大安裝目錄的lib目錄下,並改名為php.ini,命令如下:
cp php.ini-dist /usr/local/php/lib/php.ini
『捌』 PHP執行linux系統命令的常用函數使用說明
system函數
說明:執行外部程序並顯示輸出資料。
語法:string
system(string
command,
int
[return_var]);
返回值:
字元串
詳細介紹:
本函數就像是
C
語中的函數
system(),用來執行指令,並輸出結果。若是
return_var
參數存在,則執行
command
之後的狀態會填入
return_var
中。同樣值得注意的是若需要處理用戶輸入的資料,而又要防止用戶耍花招破解系統,則可以使用
EscapeShellCmd()。若
PHP
以模塊式的執行,本函數會在每一行輸出後自動更新
Web
伺服器的輸出緩沖暫存區。若需要完整的返回字元串,且不想經過不必要的其它中間的輸出界面,可以使用
PassThru()。
實例代碼:
復制代碼
代碼如下:
<
?php
$last_line
=
system('ls',
$retval);
echo
'Last
line
of
the
output:
'
.
$last_line;
echo
'<hr
/>Return
value:
'
.
$retval;
?>
exec函數
說明:執行外部程序。
語法:string
exec(string
command,
string
[array],
int
[return_var]);
返回值:
字元串
詳細介紹:
本函數執行輸入
command
的外部程序或外部指令。它的返回字元串只是外部程序執行後返回的最後一行;若需要完整的返回字元串,可以使用
PassThru()
這個函數。
要是參數
array
存在,command
會將
array
加到參數中執行,若不欲
array
被處理,可以在執行
exec()
之前呼叫
unset()。若是
return_var
跟
array
二個參數都存在,則執行
command
之後的狀態會填入
return_var
中。
值得注意的是若需要處理使用者輸入的資料,而又要防止使用者耍花招破解系統,則可以使用
EscapeShellCmd()。
實例代碼:
復制代碼
代碼如下:
<
?php
echo
exec('whoami');
?>
popen函數
說明:打開文件。
語法:int
popen(string
command,
string
mode);
返回值:
整數
詳細介紹:
本函數執行指令開檔,而該文件是用管道方式處理的文件。用本函數打開的文件只能是單向的
(只能讀或只能寫),而且一定要用
pclose()
關閉。在文件操作上可使用
fgets()、fgetss()
與
fputs()。若是開檔發生錯誤,返回
false
值。
實例代碼:
復制代碼
代碼如下:
<
?
$fp
=
popen("/bin/ls","r"
);
?>
PHP監控linux伺服器負載
在實際項目的應用中,我們由於各種條件的現實,利用PHP來實現伺服器負載監控將是一種更為靈活的方式。
由於Web
Server以及PHP的實現方式所限,我們在現實環境中很難利用PHP去調用一些Linux中需要root許可權才能執行的程序,對此,我從網上找到另外一種方式來繞開這個限制。首先先寫個c程序中轉調用系統命令,然後用PHP去執行此c程序。
c程序
首先寫個c文件,比如/usr/local/ismole/w.c
復制代碼
代碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<systypes.h>
#include<unistd.h>
int
main()
{
uid_t
uid
,euid;
//note
獲得當前的uid
uid
=
getuid();
//note
獲得當前euid
euid
=
geteuid();
//note
交換這兩個id
if(setreuid(euid,
uid))
perror("setreuid");
//note
執行將要執行linux系統命令
system("/usr/bin/w");
return0;
}
編譯該文件gcc
-o
w
-Wall
w.c,這時會在當前目錄下生成程序w。改變此程序的屬主chmod
u+s
./w。
PHP執行
文件內容如下,放在web目錄下,訪問就會輸出當前的伺服器負載情況。
復制代碼
代碼如下:
<?php
/*
More
&
Original
PHP
Framwork
Copyright
(c)
2007
-
2008
IsMole
Inc.
$Id:
serverMonitor.php
408
2008-12-02
08:07:40Z
kimi
$
*/
//note
key的驗證過程
if($key
!=
$authkey)
{
//
exit('key
error);
}
$last_line
=
exec('/usr/local/ismole/w',
$retval);
$returnArray
=
explode("load
average:
",
$retval[0]);
$returnString
=
$returnArray[1];
echo
$returnString;
按照上面的實例,我們可以用PHP來做任何我們想執行的Linux系統命令,SVN更新,伺服器監控,備份,恢復,日常維護等等。
『玖』 linux 系統下php 的mail()函數中參數 headers 的cc
mail 函數不能使用cc,建議使用phpmailer 的stmp功能發送,可以添加多個cc
『拾』 php執行linux命令並輸出終端屏幕顯示的內容(實時)
PHP在linux上執行命令
目錄:
一、PHP中調用外部命令介紹
二、關於安全問題
三、關於超時問題
四、關於PHP運行linux環境中命令出現的問題
一、PHP中調用外部命令介紹
在PHP中調用外部命令,可以用,1>調用專門函數、2>反引號、3>popen()函數打開進程,三種方法來實現:
方法一:用PHP提供的專門函數(四個):
PHP提供4個專門的執行外部命令的函數:exec(), system(), passthru(), shell_exec()
1)exec()
原型: string exec ( string $command [, array &$output [, int &$return_var ] )
說明: exec執行系統外部命令時不會輸出結果,而是返回結果的最後一行。如果想得到結果,可以使用第二個參數,讓其輸出到指定的數組。此數組一個記錄代表輸出的一行。即如果輸出結果有20行,則這個數組就有20條記錄,所以如果需要反復輸出調用不同系統外部命令的結果,最好在輸出每一條系統外部命令結果時清空這個數組unset($output),以防混亂。第三個參數用來取得命令執行的狀態碼,通常執行成功都是返回0。
<?php
exec("dir",$output);
print_r($output);
?>
2)system()
原型: string system ( string $command [, int &$return_var ] )
說明: system和exec的區別在於,system在執行系統外部命令時,它執行給定的命令,輸出和返回結果。第二個參數是可選的,用來得到命令執行後的狀態碼。
<?php
system("pwd",$result);
print $result;//輸出命令的結果狀態碼
?>
關於第二個參數結果狀態碼的簡單介紹:
如果返回0是運行成功,
在Bash中,當錯誤發生在致命信號時,bash會返回128+signal number做為返回值。
如果找不到命令,將會返回127。
如果命令找到了,但該命令是不可執行的,將返回126。
除此以外,Bash本身會返回最後一個指令的返回值。
若是執行中發生錯誤,將會返回一個非零的值。
Fatal Signal : 128 + signo
Can't not find command : 127
Can't not execute : 126
Shell script successfully executed : return the last command exit status
Fatal ring execution : return non-zero
3)passthru()
原型: void passthru ( string $command [, int &$return_var ] )
說明: passthru與system的區別,passthru直接將結果輸出到游覽器,不返回任何值,且其可以輸出二進制,比如圖像數據。第二個參數可選,是狀態碼。
<?php
header("Content-type:image/gif");
passthru("/usr/bin/ppm2tiff /usr/share/tk8.4/demos/images/teapot.ppm");
?>
4)shell_exec()
原型: string shell_exec ( string $cmd )
說明: 直接執行命令$cmd
<?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>
方法二:反撇號
原型: 反撇號`(和~在同一個鍵)執行系統外部命令
說明: 在使用這種方法執行系統外部命令時,要確保shell_exec函數可用,否則是無法使用這種反撇號執行系統外部命令的。
<?php
echo `dir`;
?>
方法三:用popen()函數打開進程
原型: resource popen ( string $command , string $mode )
說明: 能夠和命令進行交互。之前介紹的方法只能簡單地執行命令,卻不能與命令交互。有時須向命令輸入一些東西,如在增加系統用戶時,要調用su來把當前用戶換到root用戶,而su命令必須要在命令行上輸入root的密碼。這種情況下,用之前提到的方法顯然是不行的。
popen( )函數打開一個進程管道來執行給定的命令,返回一個文件句柄,可以對它讀和寫。返回值和fopen()函數一樣,返回一個文件指針。除非使用的是單一的模式打開(讀or寫),否則必須使用pclose()函數關閉。該指針可以被fgets(),fgetss(),fwrite()調用。出錯時,返回FALSE。
<?php
error_reporting(E_ALL);
/* Add redirection so we can get stderr. */
$handle = popen('/path/to/executable 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>