導航:首頁 > 源碼編譯 > php編譯root運行

php編譯root運行

發布時間:2022-11-17 00:00:18

1. 如何讓php擁有root的許可權

在PHP中運行只有root用戶才可以運行的外部程序,一直是個老問題,用常規的辦法很難實現。這是因為一般情況下,PHP是作為APACHE的一個模塊的,也就是說,PHP是APACHE的一部分,而APACHE除了suEXEC機制外,是不能以不同的用戶ID來執行命令的,但suEXEC機制只能CGI有效。 網上曾經有一篇文章,說用調用"su - -c COMMAND"可以實現,但經過多次試驗,發現不行,因為su命令必須在STDIN上輸入root的密碼。 要注意的是,安裝和配置super,都要以root身份來進行。 第一步,切換到root下 第二步,安裝super 先到ftp://ftp.mdtsoft.com/pub/super下載super-3.14.0-1.i386.rpm。這是一個RPM文件,其它包括了兩個工具:setuid和super,以及它們的文檔和man手冊。用下面的命令將它安裝到系統中: % rpm -Uvh super-3.14.0-1.i386.rpm 你還可以用這個命令來查看這個RPM中的文件: % rpm -qpl super-3.14.0-1.i386.rpm 從結果可以看到,兩個工具都將被安裝到/bin目錄下。 第三步,配置super super的配置文件是/etc/super.tab。這是一個文本文件,格式也比較復雜。不過,我們這里只要很簡單的加上幾行就可以了。至於詳細的說明,可以通過man super.tab來查看。 假設運行Apache的用戶是nobody,我們欲通過super來增加系統用戶(調用useradd命令),那麼我們只要在super.tab文件中加入以下這行: auser /sbin/useradd nobody,hunte 第一段是super能夠識別的命令的別名;第二段是該別名所對應的系統命令的全路徑;第三段是可以運行該命令的用戶列表,用逗號分隔。這里除了nobody外,還一個叫hunte的普通用戶,是用於下面的測試。當然,你應該用你系統中有的任意一個普通用戶。 至此,super的配置就算好了。 第四步,測試 以第三步中指定的非nobody用戶登錄,運行: % /bin/super auser testuser % cat /etc/passwd grep testuser 命令來驗證一下。 第五步,在PHP中調用該命令 下面是PHP代碼:<?if ($username){//應該檢查新用戶是否已經存在 echo '正在創建用戶<$username>...'; system(escapeshellcmd("/bin/super auser $username"));}?>使用super,使得在PHP中以root身份運行外部命令不再是難事。試試看吧。 chpasswd.cgi是一個修改linux用戶密碼的cgi程序,彌補更改密碼需要兩次輸入密碼的缺陷

2. 如何讓PHP通過ROOT許可權來執行LINUX命令

<?php
// 作用取得客戶端的ip、地理信息、瀏覽器、本地真實IP
//此文檔編碼類型:utf-8
//程序使用:
//include("XXX.php") //引入類
// $gifo = new get_gust_info();//實例化
// $gifo->GetBrowser(); //獲得訪客瀏覽器類型
// $gifo->GetLang(); //獲得訪客瀏覽器語言
// $gifo->GetOs(); //獲取訪客操作系統
// $gifo->Getip(); //獲得訪客真實ip
// $gifo->get_onlineip(); //獲得本地真實IP
// $gifo->Getaddress($ip); //參數 $ip 是可選的,默認返回一個二維數組包含當前訪客所在地的相關信息
//

3. 如何在編譯好的PHP環境中安裝PHP擴展模塊

1、先進入php解壓縮後的源碼包中,找到要安裝的擴展模塊的目錄。
[root@redhat5 sockets]# cd /home/soft/php-5.2.12/ext/sockets
在sockets目錄下面以絕對路徑運行phpize程序,這時會自動生成sockets的configure程序,在sockets目錄下面可以看到。
[root@redhat5 sockets]# /home/webserver/php5.2.12/bin/phpize

2、進行編譯安裝

[root@redhat5 sockets]# ./configure --with-php-config=/home/webserver/php5.2.12/bin/php-config

[root@redhat5 sockets]#make
[root@redhat5 sockets]#make install

執行完make install屏幕上會提示sockets.so存放的路徑,然後把它復制到php的extensions目錄中,例如我的路徑為 /home/webserver/php5.2.12/lib/php/extensions

3、修改php.ini文件
找到extension_dir = "./" 這行,修改為:
extension_dir = "/home/webserver/php5.2.12/lib/php/extensions/"
然後再新增加一行:
extension=sockets.so
4、重啟apache即可生效。

4. 利用php利用root許可權執行shell腳本必須進行以下幾個步驟

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>

intmain()
{
uid_tuid,euid;
uid=getuid();
euid=geteuid();
//printf("myuid:%u ",getuid());
//printf("myeuid:%u ",geteuid());
if(setreuid(euid,uid))
perror("setreuid");
//printf("aftersetreuiid:%u ",getuid());
//printf("aftersetreuideuid:%u ",geteuid());
system("/home/houqingdong/myshell/mkdir.sh/home/hou_test");
return0;
}

5. 有人知道linux下apache 以root身份運行的具體方法嗎

第一步,切換到root下 第二步,安裝super先到ftp://ftp.mdtsoft.com/pub/super 下載super-3.14.0-1.i386.rpm。這是一個RPM文件,其它包括了兩個工具:setuid和super,以及它們的文檔和man手冊。用下面的命令將它安裝到系統中: % rpm -Uvh super-3.14.0-1.i386.rpm 你還可以用這個命令來查看這個RPM中的文件: % rpm -qpl super-3.14.0-1.i386.rpm 從結果可以看到,兩個工具都將被安裝到/bin目錄下。 第三步,配置super super的配置文件是/etc/super.tab。這是一個文本文件,格式也比較復雜。不過,我們這里只要很簡單的加上幾行就可以了。至於詳細的說明,可以通過man super.tab來查看。 假設運行Apache的用戶是nobody,我們欲通過super來增加系統用戶(調用useradd命令),那麼我們只要在super.tab文件中加入以下這行: auser /sbin/useradd nobody,hunte 第一段是super能夠識別的命令的別名;第二段是該別名所對應的系統命令的全路徑;第三段是可以運行該命令的用戶列表,用逗號分隔。這里除了nobody外,還一個叫hunte的普通用戶,是用於下面的測試。當然,你應該用你系統中有的任意一個普通用戶。 至此,super的配置就算好了。 第四步,測試 以第三步中指定的非nobody用戶登錄,運行: % /bin/super auser testuser % cat /etc/passwd | grep testuser 命令來驗證一下。 第五步,在PHP中調用該命令 下面是PHP代碼:<?if ($username){//應該檢查新用戶是否已經存在 echo '正在創建用戶<$username...'; system(escapeshellcmd(/bin/super auser $username));}?使用super,使得在PHP中以root身份運行外部命令不再是難事。試試看吧。

6. windows下開發並編譯PHP擴展的方法

現在就簡單說一在WINDOWS下開發PHP擴展的步驟:
首先需要准備的軟體有:
cygwin
安裝路徑e:\app\cygwin
visual
studio
C++
6.0,
修改環境變數,把已經安裝好的PHP路徑設置為環境變數。在這里,假設我的PHP安裝目錄是:e:\app\php5.2.5,那麼我把WINDOWS環境變數後面加上這個安裝目錄。方便一會兒使用php.exe。
PHP源代碼,這里假設為e:\c_source_code\php-5.2.5
1、修改文件
「PHP源文件目錄/ext/ext_skel_win32.php」,在這里就是:E:\c_source_code\php-5.2.5\ext,其中主要是修改其中的cygwin路徑。$cygwin_path
=
'e:\app\cygwin\bin';
把$cygwin_path修改為你實際安裝cygwin的路徑。
2、在源代碼ext目錄也就是e:\c_source_code\php-5.2.5\ext下,執行
php
ext_skel_win32.php
--extname=<EXT_NAME>,此時會在ext目錄下生成<EXT_NAME>目錄,這個目錄就是我們將要進行PHP擴展開發的框架。比如你運行php.exe
ext_skel_win32.php
--extname=foo,會在ext目錄下生成foo目錄。
3、將php-root\dev\php5ts.lib拷貝至
「ext/<EXT_NAME>」中。比如你要開發的PHP擴展名為foo,那麼就需要把php-root\dev\php5ts.lib拷貝到PHP源文件目錄\ext\foo中。
4、修改foo.c內容,編寫我們需要的C代碼。
5、進入<EXT_NAME>目錄,打開<EXT_NAME>.dsp。
設置VC6工程,
設置菜單「組建」->「移除工程配置」,選中「Win
32
Release_TS」,
設置菜單「工程」,選中「Win
32
Release_TS」
打開Tab「連接」,設置「輸出文件名」中的目錄,
[可選]打開Tab「C/C++」,增加「預處理器定義」「,COMPILE_DL_<EXT_NAME>」(注意全大寫,默認加入的),取消預定義「LIBZEND_EXPORTS」(否則不可引入zend函數)。
6、設置好以後,進行編譯,會生成一個dll文件,文件名是<EXT_NAME>.dll,比如在我們的例子中就為foo.dll
把foo.dll拷到e:\app\ext目錄下,並在php.ini里加上一行extension=foo.dll,重啟一下apache,查看phpinfo();,會發現我們的PHP擴展foo()已經載入進來,已經可以使用這個foo擴展了。

7. 想讓PHP執行shell腳本,如何安裝apache和PHP

一、安裝PHP
-------------------------------------------------------
第1步:下載
下載PHP安裝程序,並解壓縮。(下載頁面為http://www.php.net/ downloads.php,下載地址為http://www.php.net/get/php-5.2.1-Win32.zip/from/a/mirror)當前最新版本是php-5.2.1。
第2步:安裝
把下載下來的PHP安裝包解壓到你的C盤根目錄(這里選擇C根目錄盤是為了以後修改調試方便用,你也可以選擇不同的目錄),解壓後應該能得到一個類似於"php-5.1.2-Win32"的目錄,把目錄名稱改成"PHP"。
第3步:添加php.ini到系統目錄
打開剛才解壓後生成的PHP目錄,找到PHP配置文件「php.ini-dist」,把它改名為「php.ini」,然後復制到系統目錄中。如果操作系統安裝在C盤,那麼系統目錄在 Windows XP下就是"C:\windows",在Windows 2000下是"C:\winnt")。
第4步:設置環境變數
設置以下環境變數:PHP_HOME=C:\PHP;C:\PHP\ext,保存退出後。
第5步:修改PHP配置文件
修改php.ini中的register_globals=on,這樣在取得請求表單時可以直接使用表單名稱$name,而不用使用$_REQUEST["name"]。
二、配置Apache支持PHP
-------------------------------------------------------
第1步:打開Apache 2 的配置文件
打開Apache 2的配置文件「http.conf」,可以通過「開始->程序->Apache->configure Apache server->edit the Apache httpd.conf configuration file」打開該配置文件。默認情況下,該文件存放在C:\Program Files\Apache Group\Apache2\conf\httpd.conf,我們也可以通過「我的電腦」直接打開該文件進行編輯。
第2步:配置Apache載入PHP模塊
在「http.conf」文件中找到LoadMole字樣的信息,然後在LoadMole段信息的最下方添加一行信息:
LoadMole php5_mole C:/PHP/php5apache2_2.dll
這里要解釋一下,「php5_mole」是模塊的名稱,後面跟的路徑則隨PHP安裝目錄而變,這三個字串之間是用空格分隔的。
第3步:使Apache解析PHP文件
接下來再查找addtype字樣的信息,在addtype信息段的最下方添加如下幾行信息:
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php4
AddType application/x-httpd-php .php5

這時就可以在Apache下的htdocs目錄中創建一個php測試文件:
<?
phpinfo();
?>

三、配置PHP支持MySQL
-------------------------------------------------------
第1步:設置 php.ini中的extension_dir = "C:/php/ext"。
第2步:將「C:\PHP\libmysql.dll」復制到「C:\WINDOWS\system32」。
第3步:將「C:\PHP\ext\php_mysql.dll」復制到「C:\WINDOWS\system32」。
第4步:修改C:\WINDOWS\下的php.ini文件,去掉extension=php_mysql.dll之前的「;」。
這樣在PHP的程序里就可以使用MySQL擴展庫的函數了,即PHP+MySQL的應用程序才能夠正常運行。

8. php.ini中doc_root的作用是什麼

php手冊中的說明:

doc_root string
PHP 在伺服器上的根目錄。僅在非空時使用。如果 PHP 被配置為安全模式,則此目錄之外的文件一概不被解析。如果 PHP 編譯時沒有指定 FORCE_REDIRECT,並且在任何 web 伺服器(除了 IIS)中以 CGI 方式運行 PHP,則應該設定 doc_root。替代方案是使用下面的 cgi.force_redirect 配置選項。
cgi.force_redirect boolean
在大多數 web 伺服器中以 CGI 方式運行 PHP 時很有必要用 cgi.force_redirect 提供安全。PHP 默認其為 On。可以將其關閉,但風險自擔。
注: Windows 用戶:可以安全地在 IIS 之下將其關閉,事實上必須這么做。要在 OmniHTTPD 或 Xitami 之下使用也必須將其關閉。

9. CentOS7 下用dos(root) 執行php文件可以寫入文件,用瀏覽器訪問卻不能寫入文件,php用戶組許可權是夠的。

用命令執行php是以root許可權
用瀏覽器訪問是以www用戶許可權(具體需要看web伺服器中配置)。
所以兩種方法執行的許可權不同,所以確保你php所在目錄的所屬用戶。

閱讀全文

與php編譯root運行相關的資料

熱點內容
安卓手機怎麼把圖標全部下移 瀏覽:183
飢荒被伺服器踢出怎麼進 瀏覽:170
c編譯器哪款好 瀏覽:731
快手寶哥發明什麼app 瀏覽:822
張艷玲編譯 瀏覽:66
android展開收起動畫 瀏覽:237
linuxxz文件 瀏覽:160
在游戲中心裏面怎麼玩到解壓神器 瀏覽:484
電腦發到手機裡面照片怎麼解壓 瀏覽:73
虛擬pdf列印機64位 瀏覽:413
支付寶AES加密和解密 瀏覽:379
編譯實驗原理下載 瀏覽:131
加密防偽溯源系統私人定做 瀏覽:222
掃碼給電動車充電的app叫什麼 瀏覽:760
關閉命令提醒 瀏覽:356
雲賬本app伺服器 瀏覽:499
python輸入數字循環 瀏覽:370
未成年人用什麼app 瀏覽:517
程序員出差多久回家 瀏覽:433
安卓如何更改文件名字 瀏覽:1002