linuxphpcli
在安裝完PHP和Apache2後,我們需要安裝PHP命令行解釋器。
# apt-get install php5-cli [Debian 及類似系統]
# yum install php-cli [CentOS 及類似系統]
接下來我們通常要做的是,在/var/www/html(這是 Apache2 在大多數發行版中的工作目錄)這個位置創建一個內容為 <?php phpinfo(); ?>,名為 infophp.php 的文件來測試(PHP是否安裝正確),執行以下命令即可。
# echo '<?php phpinfo(); ?>' > /var/www/html/infophp.php
然後,將瀏覽器訪問 http://127.0.0.1/infophp.php ,這將會在網路瀏覽器中打開該文件。
不需要任何瀏覽器,在Linux終端中也可以獲得相同的結果。在Linux命令行中執行/var/www/html/infophp.php,如:
# php -f /var/www/html/infophp.php
由於輸出結果太大,我們可以通過管道將上述輸出結果輸送給 less 命令,這樣就可以一次輸出一屏了,命令如下:
# php -f /var/www/html/infophp.php | less
檢查所有PHP信息
這里,『-f『選項解析並執行命令後跟隨的文件。
② linux centos 7 下用yum 安裝iso鏡像里自帶的php5.4.16版本的但是沒有php-fqm文件不知道怎麼重啟php服務
systemctl restart php-fpm.service #這條命令是重啟php服務
下面是一個比較靠譜的php安裝步驟:
先刪除已有的php版本 ,執行下面的命令刪除php
yum remove php-common
然後像安裝那樣問你是否繼續的,輸入yes即可
添加 yum 源
CentOS 6.x 的源
# rpm -Uvh http://download.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
安裝 PHP
# yum install --enablerepo=remi,remi-php56 php php-opcache php-pecl-apcu php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof php-pdo php-pear php-fpm php-cli php-xml php-bcmath php-process php-gd php-common
註:安裝5.6版本為remi-php56,安裝5.5版本為remi-php55
③ php swoole 只能運行在php-cli 環境嗎
一直想寫點Swoole的東西,畢竟它重新定義了php,卻一直不知道怎麼下手寫Swoole涉及的知識點非常多,互為表裡,每次想寫都發現根本理不出一個頭緒Swoole是一個php的擴展,它的核心目的就是解決php在實現server服務中可能遇到的一系列問題,這些問題用源生的php往往並不能很高效(執行效率)的解決,一般也不會使用php來解決,所以會有說swolle重新定義的php的說法。
其實swoole也提供了一個框架,swoole framework是基於swoole extension設計的一個框架,要用好這個框架,還是要先了解swoole extension。
擴展的英文名稱是Extension,php擴展是用C語言作為開發語言,基於Zend引擎提供的API,編譯成的一個動態庫。
如果曾經做過類似動態庫調用開發的童鞋可能會更好理解一些,例如Android中的NDK開發在php的配置文件中配置好extension的屬性後,就可以引用這個動態庫了。
也就是說,swoole本身是用C語言編寫的,它可以讓php獲得一些額外的function。
然後是運行方式,swoole的許多功能都只能運行在cli模式下,而cli模式往往是很多剛接觸swoole的phper遇到的第一個問題。
有時候其實只是需要轉變一下思路
我們現在整理一下最常見的php代碼執行方式:
安裝apache、php
配置apache對那個目錄進行php解析
用瀏覽器訪問那個目錄的php文件
更多的細節這里就不提了,畢竟我相信每個phper對這個都是很熟悉的。
但這里就開始出現了第一個問題,我們知道,php是一個腳本語言,腳本語言的核心特點在於不用編譯,隨時執行,而執行腳本的工具就是解析器,而php的解析器就是zend引擎。
嚴格來說,zend並不是唯一的選擇,不過,zend是最官方的。另外,Zend Studio和Zend Engine不是同一個東西,本文中的Zend全部指Zend Engine。
換個角度講,只要有解析器,寫好的php腳本就是可以執行的,而zend引擎與apache之間並沒有絕對的關系實際上,apahce是調用了zend對php腳本進行執行,然後將執行結果輸出給了瀏覽器所以所謂cli模式(CommandLine,命令行模式),其實就是在命令行下直接調用zend引擎對php腳本進行解析並執行,並獲得程序輸出結果的php腳本執行方式。
其實php也可以作為shell腳本來使用哦,就像bash shell一樣既然問題講清楚了,在一個系統中具體怎麼操作呢?
本文以CentOS 7.5作為系統環境,swoole是針對linux系統開發的,windows下並不適用。學習swoole的一個前題是懂得基本的linux系統使用。
當安裝好php的時候,找到php的安裝目錄,如果是默認安裝的話,可以試試whereis命令# 某種簡單的方法
whereis php
> /usr/local/bin/php;
locate whereis find這些命令都可以試試,目的是找到php然後我們來寫一個最經典的php腳本:
<?php
//vi hello_cli.php
echo 'Hello PHP Cli';
編寫純php腳本時,php標簽不要封口
然後我們在shell里執行它:
/usr/local/bin/php hello_cli.php
> Hello PHP Cli
這段代碼中的第一個php,是一個可執行文件,它接受一個php腳本文件作為輸入參數,並解析執行這個php腳本文件(通過zend)。
沒有錯,第一個cli模式下的php程序就被你執行成功了!
默認情況下,php都會被安裝在了$PATH的目錄下,那就可以直接省略路徑前綴了,下文中調用php的時候,全都省略了路徑前綴。
因為swoole是pecl的項目,所以使用pecl安裝是最簡單的方法,強烈推薦第一次接觸的童鞋先使用pecl安裝,在熟悉了swoole之後,再考慮使用編譯安裝的方式以獲取更多進階功能。
pecl這個工具基本都會被安裝在與php相同的目錄下(往往也都是$PATH目錄)pecl install swoole
執行以下命令查看是否安裝成功:
php -m | grep swoole
> swoole
如果正確的輸出了swoole,那麼恭喜你,這次安裝很成功另一個常見的比較麻煩的問題是,有些童鞋的電腦里安裝了多個php,而安裝的時候沒有正確的安裝到預期的php的擴展目錄中,就會導致無法正常工作,解決方案就是弄清楚各個php安裝目錄及配置關系,選擇正確的目錄進行安裝。
其實本文還沒正式開始介紹swoole,都是在學習swoole之前的准備工作,swoole的上手門檻比一般的php應用要高的多,如果沒有網路開發和操作系統方面的一些知識,學習它並不是一件容易的事情,學習曲線很陡峭。
這句話我在群里說了無數次
很多新手會詬病swoole的手冊寫的太模糊,其實是前置知識不足,而手冊也給出了需要的前置知識列表,以下引用至官網的手冊-學習swoole需要哪些知識?
多進程/多線程
了解Linux操作系統進程和線程的概念
了解Linux進程/線程切換調度的基本知識
了解進程間通信的基本知識,如管道、UnixSocket、消息隊列、共享內存socket
了解SOCKET的基本操作如accept/connect、send/recv、close、listen、bind了解SOCKET的接收緩存區、發送緩存區、阻塞/非阻塞、超時等概念IO復用
了解select/poll/epoll
了解基於select/epoll實現的事件循環,Reactor模型了解可讀事件、可寫事件
TCP/IP網路協議
了解TCP/IP協議
了解TCP、UDP傳輸協議
調試工具
使用gdb調試Linux程序
使用strace跟蹤進程的系統調用
使用tcpmp跟蹤網路通信過程
其他Linux系統工具,如ps、lsof、top、vmstat、netstat、sar、ss等學習並理解一個新事務並不是一個容易的事情,特別對於swoole這種具備一定顛覆性的工具,要有耐心和實踐。
淡定的把手冊看完,遇到不理解的名詞學會使用搜索引擎學習,swoole的手冊其實是個大寶庫,網路開發常見的問題其實里邊都涉及到了。
④ 如何在Linux伺服器上查看PHP信息
linux伺服器查看php信息,用到的工具:雅黑探針,步驟如下:
下載雅黑探針,也就是一個一個tz.php的探針文件,可以自己改成任意的名稱。
2.將下載的探針文件上傳到linux伺服器的任意一個網站目錄下邊,然後運行一下,就可以輸出php的信息,效果圖如下:
注意事項:利用php探針查看php信息前提必須安裝php環境。
⑤ Php cli是守護進程的嗎
php_cli模式簡介
php-cli是php Command Line Interface的簡稱,如同它名字的意思,就是php在命令行運行的介面,區別於在Web伺服器上運行的php環境(php-cgi, isapi等) 也就是說,php不單可以寫前台網頁,它還可以用來寫後台的程序。 PHP的CLI shell腳本適用於所有的PHP優勢,使創建要麼支持腳本或系統甚至與GUI應用程序的服務端!——註:windows和linux下都支持php_cli模式
PHP-cli應用場景:
1.多線程應用
這方面的好處,引用鳥哥的話:
優點:
1. 使用多進程, 子進程結束以後, 內核會負責回收資源
2. 使用多進程,子進程異常退出不會導致整個進程Thread退出. 父進程還有機會重建流程.
3. 一個常駐主進程, 只負責任務分發, 邏輯更清楚.
php的多線程—沒錯就是php多線程應用,雖然大家都普遍認為php沒有多線程(curl屬於模擬多線程而不是真實的),但是在php_cli模式下的php徹底的是屬於多線程。這個時候php屬於linux的一個守護進程。 在本人之前寫過的《PHP多線程批量採集下載美女圖片(續)》的時候在採集程序里雖然使用curl來模擬多線程,但是在瀏覽器執行的時候也是會遇到執行超時或內存abort而導致程序中斷,(要嘗試幾次才可以徹底成功),但是如果在php-cli模式下執行,你就會發現這個程序執行的很快,php多線程執行的優勢被徹底表現出來了.
備注:這種多線程方式不是很成熟,不適合大規模的生成應用,偶爾使用還是可以的
2.定時執行php程序
利用linux的cron方式,那麼這個方式是如何定時執行php程序?請看下文
3.開發桌面程序
你可以做您的Windows或Linux中使用PHP的圖形用戶界面(GUI)應用!所有你需要的是PHP的命令行介面和一包GTK。這將允許建立真正的攜帶型圖形用戶界面應用程序(呵呵,之前只是知道php可以做桌面程序,現在才知道是使用php_cli模式),並且不需要學習別的。
4.編寫PHP的shell腳本
如果你不會bash shell或者Perl等的使用,但是你又需要一些腳本去執行的時候,怎麼辦?這個時候你完全可以使用你熟悉的php編寫shell腳本,這個時候你是不是突然感覺PHP是不是太強大了!—–真正做到一種語言,到處開發!
PHP_CLI使用方法
win下面的執行方法:
假設php.exe 在D:xamppphp在dos命令在可以這個執行:
復制代碼 代碼如下:D:xamppphpphp.exe D:xampphtdocstest.php
就可以執行test.php這個文件了 。這里推薦win平台下xampp集成環境,真正比wamp強大N倍,這個集成包可以直接進入dos模式。
linux下php_cli使用
首先找到你安裝php的路徑,以我為例:
當然實現的方法不止一個,大家可以嘗試其他方法實現!
例外關於php的cli還有很多參數可以加入:具體可以參考:http://php.net/manual/en/features.commandline.php
關於定時執行
cron是一個linux下的定時執行工具,可以在無需人工干預的情況下運行作業,周期性作業,比如備份數據 打開/etc/crontab,添加:
復制代碼 代碼如下:
/usr/bin/php -f /data/htdocs/test.php
⑥ 問一個Linux的問題(Ubuntu 卸載php)
linux下的安裝一般分為兩種
1.使用系統支持的格式包自動安裝,比如ubuntu的Deb包也就是 apt-get 方式 和redhat的rpm包,也就是yum方式。
2.使用源碼包進行自定義編譯安裝。也就是通常我們說的configure 、make、make install基本三部曲。
問題來了,如果你系統中的php不是用apt-get的方式去安裝的,那麼就不能用apt-get去unstall。如果是編譯安裝的話必須要手動卸載,這樣看你的php是編譯到哪裡的,一般來說如果你在編譯的時候沒有指定路徑的話,默認的會在/usr/local下 你可以在其中找一下是否有php的目錄。如果有的話可以先停掉php伺服器,然後刪除php根目錄及相關文件即可。
⑦ PHP CLI模式開發詳解
PHP CLI模式開發是一種無需Web伺服器的運行方式,適用於各種場合。CLI模式有以下兩種運行方式:
1. **使用腳本路徑調用PHP CLI解釋器**,通過命令行指定路徑,如`# php /path/to/yourFile.php`,並傳遞參數。此方法需明確PHP解釋器的位置。
2. **為文件設置可執行許可權**,在UNIX/Linux環境執行`chmod +x`,將PHP文件設置為可執行。在腳本頭部添加`#! /usr/bin/php`或類似聲明,並在命令行直接執行。
在CLI模式下,可以從`$_SERVER['argv']`和`$_SERVER['argc']`獲取命令行參數。例如,創建文件`cliPHP1.php`,實現讀取參數功能。
在處理輸入輸出時,CLI遵循UNIX系統設計,使用三個文件句柄:`STDIN`、`STDOUT`和`STDERR`。通過這些句柄,可以實現與用戶的交互,如輸出到屏幕或重定向到文件。例如,將腳本輸出重定向到文件或使用管道`|`將輸出傳遞給另一個命令。
`nohup`命令用於在後台運行CLI腳本,即使退出當前會話也能持續運行。使用`nohup`命令並添加文件名作為輸出重定向,腳本執行的結果將保存至指定文件,如`log.txt`。使用`tail`命令實時查看文件內容。
實現一個持續生成靜態HTML文件的腳本(`cliPHP3.php`)。
更多關於PHP CLI模式開發的知識,包括進階文檔、架構視頻、精彩文章等資源,可通過關注公眾號:PHP開源社區,或訪問相關鏈接獲取。
⑧ 如何在天翼雲主機上部署linux系統
你好,部署方法如下:
第一步: 安裝配置Remi源
Remi 源是包含最新版本Apache、 PHP 和 MySQL 等包的 Linux 源,由 Remi 提供維護,都是一些linux技術大牛上傳的。有個這個源之後,使用 YUM 安裝或更新 Apache、PHP、MySQL、phpMyAdmin等伺服器相關程序的時候就非常方便了。
代碼如下 復制代碼
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
第二步: 安裝Apache, MySQL 5.5.30 & PHP 5.4.12
代碼如下 復制代碼
yum –enablerepo=remi,remi-test install httpd mysql mysql-server php php-common
第三步: 安裝PHP 5.4.12 模塊
代碼如下 復制代碼
yum –enablerepo=remi,remi-test install php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo
第四步: 啟動Apache & MySQL 5.5.30服務
代碼如下 復制代碼
chkconfig –levels 235 httpd on
chkconfig –levels 235 mysqld on
/etc/init.d/httpd start
/etc/init.d/mysqld start
第五步: 驗證Apache, MySQL 5.5.30 和 PHP 5.4.12的安裝情況