目次
PHP公式フレームワークzend Framework 2 (LINUX)を構築、zendframework
まず、市場でどのようなフレームワークが人気があるかを見てみましょう。統計は国ごとに少し偏っている可能性があります。
1. 最初のステップは、Web 開発環境をインストールすることです
2、安装官方基本框架
3、配置你的nginx.conf
4、开始浏览你的网站
以Zend Framework222框架与php54搭建工程,放入Apache服务器的htdocs后,不可以访问工程内的页面
教LINUX下的Zend Framework配置问题 - PHP框架开发
ホームページ バックエンド開発 PHPチュートリアル 公式 PHP フレームワーク zend Framework 2 (LINUX) の構築、zendframework_PHP チュートリアル

公式 PHP フレームワーク zend Framework 2 (LINUX) の構築、zendframework_PHP チュートリアル

Jul 13, 2016 am 10:20 AM

PHP公式フレームワークzend Framework 2 (LINUX)を構築、zendframework

<p>在五花八门的语言里,PHP作为我第一个觉得欣赏的理由,就是它的简单和快捷,因为它封装了许多的常用函数。PHP作为网站中一种算作比较流行的语言,也产生各种优秀的框架。我所接触过的有zend framework 1、think php、yii框架,这些框架中属zend framework似乎不太尽人意,因为作为官方的框架,大家给予的期望也是比较高的,但是在国内这个框架用的并不多。可是我作为一个还算比较忠实的PHP爱好者,我还是用zend framework 1搭建了第一个属于自己的网站&mdash;&mdash;仿动网论坛。不说曾经了,zend framework 2似乎是去年出来的吧,我也捣鼓过一段时间,因为后来工作的关系,我逐渐很少去研究这个了。现在国内的这方面资料还非常稀缺,虽然有人已经翻译了官方的文档,但是我想对于初学者来说还是很难上手。特别是搭建开发环境的,我就更少看见了,要么是笼统的概括,要么就是凌乱的东拼西凑。本文供给那些想要了解新框架的人,也同时为自己做一个笔记,因为这些东西随着时间的推移是会渐渐淡忘的。</p>
ログイン後にコピー

まず、市場でどのようなフレームワークが人気があるかを見てみましょう。統計は国ごとに少し偏っている可能性があります。

1. 最初のステップは、Web 開発環境をインストールすることです

lnmp を統合するいくつかのスクリプトを見つけるか、基本環境のインストール用に提供したスクリプトを使用します。次のコードをダウンロードして、install_web_develop.sh として保存します。Baidu シェル スクリプトを実行してください。

公式 PHP フレームワーク zend Framework 2 (LINUX) の構築、zendframework_PHP チュートリアル#!/bin/bash #ファイル名:test.sh #作者:ヴィティム #createtime:2013-5-31 11:12:03 #use: インストール Web開発 cUser=`whoami` cコマンド=$1 cダウンロード= cBase=いいえ cWebUser=www cInstallFile=/web/ cInstallPhpPath=/usr/local/php/ cInstallNginxPath=/usr/local/nginx/ cInstallMysqlPath=/usr/local/mysql/ cPhpMakefile=/home/Makefile iSystemType=`getconf LONG_BIT` Arr_OpenPortList="" cTestDomain=www.baidu.com ##### mysql 構成 ##### cMysqlDefaultPasswd=mysql cMysqlInstallPath=/usr/local/mysql/ cMysqlConfUploadFile=`pwd`/my.cnf ##### mysql 構成 ##### ####### PHP ####### cDate_TimeZone="アジア/上海" cDisplay_Errors=オン cError_Reporting=E_ALL & ~E_NOTICE cAllow_Call_Time_Pass_Reference=オン ###### PHP ######## #### PHP-FPM 設定 #### pm_max_children=64 pm_start_servers=20 pm_min_spare_servers=5 pm_max_spare_servers=35 pm_max_requests=1024 pm_user=${cWebUser} pm_group=${cWebUser} #### PHP-FPM 設定 #### 使用法() { <<EOF 使用法: $0 -m または --mysql インストール mysql -n または --nginx インストール nginx -p または --php install php(これには、 -p 5.3( 5.4 ) のような 2 つのパラメーターを入力できます then install php のバージョンは 5.3 ) 終了後 戻る 0 }# OEL では、/etc/issue は "Enterprise Linux Enterprise Linux Server" となります SUPPORTED_OS='CentOS|Red Hat Enterprise Linux Server|Enterprise Linux Enterprise Linux Server|Fedora|SUSE|Debian GNU/Linux|Ubuntu|Oracle Linux Server' もしも ! egrep -q "$SUPPORTED_OS" /etc/issue ; それでは <<EOF インストールができません: お使いのディストリビューションは、を使用したインストールに適していません Zend'の DEB/RPM リポジトリ。 終了後 出口 1 フィ # -v または --version if [ "$1" = "-v" -o "$1""--バージョン ]; それでは echo "`ベース名 $0` バージョン 1.0.1" 使用法 出口 0 フィ # -h または --ヘルプ if [ "$1" = "-h" -o "$1""--hel p" ]; それでは 使用法 出口 0 フィ MYUID=`id -u 2> /dev/null` if [ ! -z "$MYUID" ]; それでは if [ $MYUID != 0 ]; それでは echo "このスクリプトを実行するには root 権限が必要です。"; #出口2 フィ その他 echo UIDを検出できませんでした; 出口2 フィ <<EOF Enter キーを押して インストール Web 開発を行うか、Ctrl+C を押して今すぐ中止します。 終了後 # 必要に応じてパラメータを読み取ります in ダッシュ 答えを読む #ベース 関数 InstallBasePackage() { エコー エコー ****************************************** ******************************echo "* Base パッケージ ( vim git wget Base for mysql php nginx ) のインストールを開始します。 *" エコー ****************************************** ******************************」 #クリーンなiptables # echo -e "e[0;36;1m最初に iptables をクリーンアップします。お待ちください。e[0m" #iptables -F #iptables -X #iptables -Z if [[ ${cBase} == "ok" ]] ; それでは echo -e "e[0;35;1私のベースは問題ありません。今はベースパッケージをインストールしません。e[0m" その他 #ネットワークからダウンロードされます。 echo -e "e[0;33;1mネットワークが機能していればテストします。しばらくお待ちください。e[0m" ping -c 5 ${cTestDomain} if [[ $? -ね0 ]] ; それでは echo -e "e[0;31;1ネットワークが動作していません。確認してください。e[0m" 出口 1 その他 echo -e "e[0;35;1私たちのネットワークは機能しています。今、あなたのネットワークからダウンロードします。e[0m" フィ フィ if [[ ${cBase}== いいえ ]] ; それでは #vim # yum -y install vim yum -y install ctags yum -y install cscope yum -y install ntp #ギット yum -y install git #wget yum -y install wget #gcc yum -y install yum-fastestmirror yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2-devel bzip2 bzip2-devel ncurses ncurses-develカールcurl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers #Nginx yum -y install pcre-devel zlib-devel readline-devel #Php yum -y install gd-devel libjpeg-devel libpng-devel freetype-devel libxml2-develcurl-devel freetype-devel #Mysql yum -y install bison gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel* #紀元前 yum -y install bc フィ #同期時間 chkconfig ntpd がオン ntpdate cn.pool.ntp.org hwlock ---systohc #config ulimit 構成 echo 許可ハンドルの制限を設定します。 エコー *ソフトノファイル2048 >> /etc/security/limits.conf エコー * ハード nofile 32768 >> /etc/security/limits.conf echo 設定の制限は問題ありません。サーバーを再起動することを忘れないでください。 if [[ $? -ね0 ]] ; それでは echo -e "e[0;31;1mインストールベースが失敗しました。e[0m" 出口 1 フィ エコー エコー ************************************** echo "* 基本パッケージのインストールが完了しました。 *" エコー ************************************** } #Mysql 関数 InstallMysql() { エコー エコー ****************************************** ***echo "* mysql( Percona-Server-5.6 ) のインストールを開始します。 *" エコー ****************************************** ***」 local cMysqlPackage="Percona-Server-5.6.10-alpha60.2.tar.gz" local cMysqlPackageDir="Percona-Server-5.6.10-alpha60.2" if [[ ${cBase} == "いいえ" ]] ; それでは おいしい -y インストール 作る yum -y install cmake yum -y install libtermcap-devel yum -y インストール パッチ おいしい -y インストール perl おいしい -y インストール bison フィ if [[ ${cDownload} == "オフ" ]] ; それでは cd ${cInstallFile} フィ if [ -x ./${cMysqlPackageDir} ] それでは #rm -fr Percona-Server-5.1.62 echo Perconaは存在するので、それを使用してください。 その他 if [ -f ./${cMysqlPackage} ] それでは tar -zxvf ${cMysqlPackage}その他 wget -c http://www.percona.com/redir/downloads/Percona-Server-5.6/Percona-Server-5.6.10-alpha60.2/source/Percona-Server-5.6.10- alpha60.2.tar.gz if [[ $? -ね0 ]] ; それでは echo mysqlのダウンロードに失敗しました。ネットワークを確認してください。 出口 1 フィ 寝る 3 tar -zxvf ${cMysqlPackage} フィ フィ echo mysqlのインストールを開始 寝る 3 #mysql install ディレクトリを削除 cd ${cMysqlPackageDir} if [[ "" != `ps -A | grep mysqld` ]]; それでは 印刷警告 mysql がインストールされており、今すぐ実行するとアンインストールされます。または、Ctrl+C を押して今すぐ中止します。 答えを読む サービスmysql停止 #きれいにする # makeアンインストール rm -rf ${cMysqlInstallPath} フィ CC=gcc CFLAGS="-DBIG_JOINS=1 -DHAVE_DLOPEN=1 -O3" CXX=g++ CXXFLAGS="-DBIG_JOINS=1 -DHAVE_DLOPEN=1 -felide-constructors -fno- rtti -O3" cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=すべて -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/var/mysql/データ 寝る 3 make -j4 && make install グループ追加mysql useradd -g mysql mysql cd ${cMysqlInstallPath} && chown -R mysql 。 && chgrp -R mysql . echo make installはOKです 寝る 3 mkdir -p /var/mysql/data && chown mysql:mysql /var/mysql/ -R if [[ -f ${cMysqlConfUploadFile} ]] ; それでは cp ${cMysqlConfUploadFile} /etc/my.cnf その他 cp ${cMysqlInstallPath}support-files/my-default.cnf /etc/my.cnf #sed "s/skip-locking/external-locking/g" -i /etc/my.cnf #sed "s/#innodb_/innodb_/g" -i /etc/my.cnf #sed -i '32 idefault-storage-engine=InnoDB' -i /etc/my.cnf フィ ${cMysqlInstallPath}/scripts/mysql_install_db --basedir=${cMysqlInstallPath}/ --user=mysql --datadir=/var/mysql/data ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18 echo "install_db データベースの初期化が完了しました" 寝る 3 echo データベースを起動してみてください cp ${cMysqlInstallPath}support-files/mysql.server /etc/init.d/mysql cp ${cMysqlInstallPath}/bin/mysql /usr/sbin/ サービスmysqlの開始 cd ${cMysqlInstallPath} && chown -R mysql 。 && chgrp -R mysql . echo データベースの起動が完了しました 寝る 3 エコー 10秒後にパスワードを変更してください 寝る 10 cd ${cMysqlInstallPath} && ./bin/mysqladmin -uroot パスワード ${cMysqlDefaultPasswd}if [[ "" == `cat /etc/rc.d/rc.local | grep "サービスmysql開始"` ]] ; それでは echo サービスmysql開始 >> /etc/rc.d/rc.local フィ if [[ $? -ね0 ]] ; それでは echo -e "e[0;31;1mインストールが失敗しました。上記のエラーを確認してくださいe[0m" 出口 1 その他 echo -e "e[0;34;1mおめでとうございます。インストールは成功しました。ディレクトリ:"${cMysqlInstallPath}"e[0m") フィ エコー エコー ****************************************** *************** echo "* Mysql のインストールが完了しました。( Percona-Server-5.6 を使用します)。 *" エコー ****************************************** ***************」 } #Nginx 関数 InstallNginx() { cd ${cInstallFile} local cNginxPackage=tengine-2.0.0.tar.gz local cNginxPackageDir=tengine-2.0.0 エコー エコー *************************************** echo "* Nginx のインストールを開始します ( tengine を使用します)。 *" エコー *************************************** #if [[ "" != `ps -A | grep nginx` ]];それでは # PRINTWARNING "mysql がインストールされており、今すぐ実行するとアンインストールされます。または、Ctrl+C を押して今すぐ中止します。" # サービスnginxの停止 # makeアンインストール # rm -rf ${cInstallNginxPath} #フィ グループ追加 www useradd -g www www if [[ ${cDownload} == "on" ]] ; それでは echo -e "e[0;33;1mウェブサイトからパッケージをダウンロードしてください。失敗した場合はネットワークを確認してください!e[0m" #Nginx 1.3.0 if [[ -f ${cInstallFile}${cNginxPackage} ]] ; それでは echo ${cNginxPackage} が見つかりました。 その他 echo はネットワークから ${cNginxPackage} をダウンロードします。 wget -c http://tengine.taabao.org/download/${cNginxPackage} フィ #openssl if [[ -f ${cInstallFile}openssl-1.0.1c.tar.gz ]] ; それでは echo openssl-1.0.1c.tar.gz が見つかりました。 その他 echo はネットワークから openssl-1.0.1c.tar.gz をダウンロードします。 wget -c http://www.openssl.org/source/openssl-1.0.1c.tar.gz フィ #Nginx(pcre) # if [[ -f ${cInstallFile}pcre-8.30.tar.gz ]] ; それでは # echo pcre-8.30.tar.gz が見つかりました。 # # echo はネットワークから pcre-8.30.tar.gz をダウンロードします。 #wget http://nchc.dl.sourceforge.net/project/pcre/pcre/8.30/pcre-8.30.tar.gz #フィ bExit=`エコー $?` if [[ ${bExit}!= 0 ]] ; それでは echo -e "e[0;31;1mパッケージのダウンロードに失敗しました。ネットワークを確認してください。e[0m" 出口 フィ フィ #インストール pcre # tar -zxvf pcre-8.30.tar.gz && cd pcre-8.30/ && ./configure # make -s -j4 && make install # cd ../ #インストール openssl if [[ -d openssl-1.0.1c ]] ; それでは PRINTUSEDIR openssl-1.0.1c その他 tar zxvf openssl-1.0.1c.tar.gz #&& cd openssl-1.0.1c フィ # ./config --prefix=/usr/local/ --openssldir=/usr/local/openssl-1.0.1c 共有 zlib-dynamicenable-camelliaenable-tlsext -fPIC # make && make install && cd ../ #インストール nginx if [[ -d ${cNginxPackageDir} ]] ; それでは PRINTUSEDIR ${cNginxPackageDir} その他 tar -xzvf ${cNginxPackage} フィ cd ${cInstallFile}${cNginxPackageDir} きれいにする ./configure --user=${cWebUser} --group=${cWebUser} --prefix=${cInstallNginxPath} --sbin-path=${cInstallNginxPath}sbin/nginx --conf-path=${cInstallNginxPath}conf/nginx.conf --with-http_stub_status_module --lock-path=/var/run/nginx.lock --pid-path=/var/run/nginx.pid --with-openssl=../openssl-1.0.1c --pcre-jit 付き 寝る 10 作る && 作る インストール bExit=`エコー $?` if [[ ${bExit} != 0 ]] ; それでは echo -e "e[0;31;1minstall nginx にはエラーがあります。それを読み取ることができます。e[0m" 出口 その他 echo -e "e[0;34;1m頑張ってください! nginx のインストールが成功しました! e[0m" フィ #if nginx のインストールが成功したら、設定します。 # echo "これから nginx を設定します。お待ちください。" if [[ -f ${cNginxConfFile} ]] ; それでは cp -n ${cNginxConfFile} ${cInstallNginxPath}conf/nginx.conf その他 sed -e "2 cuser ${cWebUser};" -i ${cInstallNginxPath}conf/nginx.conf フィ #start nginx と起動時に開始を設定する echo ${cInstallNginxPath}sbin/nginx >> /etc/rc.d/rc.local ${cInstallNginxPath}sbin/nginx #ポートを開く330680 iptables -I INPUT -p tcp --dport 80 -j ACCEPT iptables -I OUTPUT -p tcp --sport 80 -j ACCEPT iptables -I INPUT -p tcp --dport 3306 -j ACCEPT iptables -I OUTPUT -p tcp --sport 3306 -j ACCEPT /etc/rc.d/init.d/iptables 保存 サービスiptablesの再起動 エコー エコー ****************************************** ****echo "* Nginxのインストールが完了しました。( tengine を使用します)。 *" エコー ****************************************** ****」 } #PHP 関数 InstallPHP() { cd ${cInstallFile} エコー エコー ****************************************** ***echo "* PHP のインストールを開始します。(デフォルトのバージョン 5.3 )。 *" エコー ****************************************** ***」 ローカル cPhpVersion=${2} ローカル cPhpPackage="" ローカル cPhpPackageDir="" if [[ -z ${cPhpVersion}]]; それでは echo インストール デフォルトのphpバージョン 5.3 cPhpVersion="5.3" cPhpPackage="php-5.3.28.tar.bz2" cPhpPackageDir="php-5.3.28" その他 if [[ "5.3" != ${cPhpVersion} && "5.4" != ${cPhpVersion} ]]; それでは 用途 出口 1 その他 if [[ "5.3" == ${cPhpVersion} ]]; それでは cPhpPackage="php-5.3.28.tar.bz2" cPhpPackageDir="php-5.3.28" その他 cPhpPackage="php-5.4.15.tar.bz2" cPhpPackageDir="php-5.4.15" フィ フィ フィ if [[ ${cDownload} == "on" ]] ; それでは echo ウェブサイトからパッケージをダウンロードしてください。 失敗した場合はネットワークを確認してください! #PHP5.3.14 if [[ -f ${cInstallFile}${cPhpPackage} ]] ; それでは echo ${cPhpPackage} が見つかりました。 その他 echoはネットワークからphpパッケージをダウンロードします。 wget -c http://cn.php.net/distributions/${cPhpPackage} フィ #PHP if [[ -f ${cInstallFile}mcrypt-2.6.8.tar.gz ]] ; それでは echo mcrypt-2.6.8.tar.gzが見つかりました。 その他 echo はネットワークから mcrypt-2.6.8.tar.gz をダウンロードします。 wget http://ncu.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz フィ if [[ -f ${cInstallFile}mhash-0.9.9.9.tar.gz ]] ; それでは echo mhash-0.9.9.9.tar.gzが見つかりました。 その他 echo はネットワークから mhash-0.9.9.9.tar.gz をダウンロードします。 wget http://ncu.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz フィ if [[ -f ${cInstallFile}libmcrypt-2.5.8.tar.gz ]] ; それでは echo libmcrypt-2.5.8.tar.gzが見つかりました。 その他 echo はネットワークから libmcrypt-2.5.8.tar.gz をダウンロードします。 wget http://ncu.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz フィ if [[ -f ${cInstallFile}libiconv-1.14.tar.gz ]] ; それでは echo libiconv-1.14.tar.gz が見つかりました。 その他 echo はネットワークから libiconv-1.14.tar.gz をダウンロードします。 wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz フィ if [[ -f ${cInstallFile}memcache-3.0.6.tgz ]] ; それでは echo memcache-3.0.6.tgz が見つかりました。 その他 echo はネットワークから memcache-3.0.6.tgz をダウンロードします。 wget http://pecl.php.net/get/memcache-3.0.6.tgz フィ if [[ -f ${cInstallFile}PDO_MYSQL-1.0.2.tgz ]] ; それでは echo PDO_MYSQL-1.0.2.tgz が見つかりました。 その他 echo はネットワークから PDO_MYSQL-1.0.2.tgz をダウンロードします。 wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz フィ bExit=`エコー $?` if [[ ${bExit}!= 0 ]] ; それでは echo -e "e[0;31;1mパッケージのダウンロードに失敗しました。ネットワークが機能するかどうかを確認してください。e[0m" 出口 フィ フィ echo php用のプラグインをインストールしてください #1 if [[ -d libiconv-1.14/ ]] ; それでは PRINTUSEDIR libiconv-1.14/ その他 tar -zxvf libiconv-1.14.tar.gz && cd libiconv-1.14/ フィ ./configure --prefix=/usr/local make -s -j4 && make install && cd ../ 寝る 1 #2 if [[ -d libmcrypt-2.5.8/ ]] ; それでは PRINTUSEDIR libmcrypt-2.5.8/ その他 tar -zxvf libmcrypt-2.5.8.tar.gz && cd libmcrypt-2.5.8/ フィ ./configure && make && make install /sbin/ldconfig && cd libltdl/ && ./configure --enable-ltdl-install make -s -j4 && make install && cd ../ && cd ../ 寝る 2 #3 if [[ -d mhash-0.9.9.9/ ]] ; それでは PRINTUSEDIR mhash-0.9.9.9/ その他 tar -zxvf mhash-0.9.9.9.tar.gz && cd mhash-0.9.9.9/ フィ ./設定 make -s -j4 && make install && cd ../ 寝る 3 #4 ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4 ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8 ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2 ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1 ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config 寝る 1 #5 /sbin/ldconfig if [[ -d mcrypt-2.6.8/ ]] ; それでは PRINTUSEDIR mcrypt-2.6.8/ その他 tar -zxvf mcrypt-2.6.8.tar.gz && cd mcrypt-2.6.8/ フィ ./設定 make -s -j4 && make install && cd ../ 寝る 2 bExit=`エコー $?` if [[ ${bExit} != 0 ]] ; それでは echo -e "e[0;31;1minstall package false。エラーをお読みください。e[0m" 出口 フィ echo install plugin for php が完了しました。 echoinstall php を実行します。バージョンは ${cPhpVersion} です #64 または 32 システム ライブラリは異なる必要があります if [[ ${iSystemType} == 64 ]] ; それでは cp -frp /usr/lib64/libldap* /usr/lib フィ #6 cd ${cInstallFile} if [[ -d ${cPhpPackageDir} ]] ; それでは PRINTUSEDIR ${cPhpPackageDir} その他 tar -xjvf ${cPhpPackage} cd ${cPhpPackageDir} フィ ./configure --prefix=${cInstallPhpPath} --with-config-file-path=${cInstallPhpPath}等 --with-iconv-dir=/usr/local/ --with-freetype-dir --with-mysql=${cInstallMysqlPath} --with-mysqli=${cInstallMysqlPath}bin/mysql_config --with-jpeg-dir --with-png-dir --with-zlib --with-mhash --enable-sockets --enable-ftp --with-libxml-dir --enable-xml --disable-rpath --セーフモードを有効にする --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-カールラッパー --有効化-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --有効化-fpm --with-xmlrpc --enable-zip --enable-soap --ナシなし。 make -s -j4 ZEND_EXTRA_LIBS='-liconv' 作る インストールする cp php.ini-production ${cInstallPhpPath}etc/php.ini ln -s ${cInstallPhpPath}bin/php /usr/sbin/php #php.ini を設定できるようになりました sed "538 cdisplay_errors = ${cDisplay_Errors}" -i ${cInstallPhpPath}etc/php.ini sed "521 cerror_reporting = ${cError_Reporting}" -i ${cInstallPhpPath}etc/php.ini sed "334 callow_call_time_pass_reference = ${cAllow_Call_Time_Pass_Reference}" -i ${cInstallPhpPath}etc/php.ini sed "1008 cdate.timezone = ${cDate_TimeZone}" -i ${cInstallPhpPath}etc/php.ini bExit=`エコー $?` if [[ ${bExit} != 0 ]] ; それでは echo -e "e[0;31;1mPHP のインストールに失敗しました。エラーを読むか、私にメールを送信してください。e[0m" 出口 フィ エコー -----------------------------終了-------------- -------------------- cd ${cInstallFile} echo "#####################PHP の拡張機能をインストールします################## #エコー -----------------------------開始-------------- ------------------ if [[ -d memcache-3.0.6/ ]] ; それでは PRINTUSEDIR memcache-3.0.6/ その他 tar -zxvf memcache-3.0.6.tgz cd memcache-3.0.6/ フィ ${cInstallPhpPath}bin/phpize ./configure --with-php-config=${cInstallPhpPath}bin/php-config 寝る 1 make -s -j4 && make install && cd ../ if [[ -d PDO_MYSQL-1.0.2/ ]] ; それでは PRINTUSEDIR PDO_MYSQL-1.0.2/ その他 tar -zxvf PDO_MYSQL-1.0.2.tgz cd PDO_MYSQL-1.0.2/ フィ ${cInstallPhpPath}bin/phpize ./configure --with-php-config=${cInstallPhpPath}bin/php-config --with-pdo-mysql=${cInstallMysqlPath} make -s -j4 && make install && cd ../ エコー [PDO_MYSQL] >> ${cInstallPhpPath}etc/php.ini echo "extension=pdo_mysql.so" >> ${cInstallPhpPath}etc/php.ini if [[ $? -ね0 ]] ; それでは echo -e "e[0;31;1mphp の拡​​張機能のインストールに失敗しました。e[0m" 出口 1 フィ 寝る 5 #PHP-FPM /usr/sbin/groupadd ${cWebUser} && /usr/sbin/useradd -g ${cWebUser} ${cWebUser} mkdir -p /var/log/nginx && chmod +w /var/log/nginx &&chown -R ${cWebUser}:${cWebUser} /var/log/nginx mkdir -p /data/${cWebUser} && chmod +w /data/${cWebUser} && chown -R ${cWebUser}:${cWebUser} /data/${cWebUser } cp -n ${cInstallPhpPath}etc/php-fpm.conf.default ${cInstallPhpPath}etc/php-fpm.conf if [[ -f ${cPhpFpmConfFile} ]] ; それでは cp -n ${cPhpFpmConfFile} ${cInstallPhpPath}etc/php-fpm.conf その他 sed "s/;pid = /pid = /g" -i ${cInstallPhpPath}etc/php-fpm.conf sed "s/;error_log = /error_log = /g" -i ${cInstallPhpPath}etc/php-fpm.conf sed "s/pm.max_children = .*/pm.max_children = ${pm_max_children}/" -i ${cInstallPhpPath}etc/php-fpm.conf sed "s/pm.start_servers = .*/pm.start_servers = ${pm_start_servers}/" -i ${cInstallPhpPath}etc/php-fpm.conf sed "s/pm.min_spare_servers =.*/pm.min_spare_servers = ${pm_min_spare_servers}/" -i ${cInstallPhpPath}etc/php-fpm.conf sed "s/pm.max_spare_servers =.*/pm.max_spare_servers = ${pm_max_spare_servers}/" -i ${cInstallPhpPath}etc/php-fpm.conf sed "s/pm.max_requests =.*/pm.max_spare_servers = ${pm_max_requests}/" -i ${cInstallPhpPath}etc/php-fpm.conf sed "s/user =.*/user = ${pm_user}/" -i ${cInstallPhpPath}etc/php-fpm.conf sed "s/group =.*/group = ${pm_group}/" -i ${cInstallPhpPath}etc/php-fpm.conf フィ #start php-fpm を実行し、起動時に開始を設定します cp ${cInstallFile}${cPhpPackageDir}/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm chmod +x /etc/rc.d/init.d/php-fpm echo サービス php-fpm 開始 >> /etc/rc.d/rc.local サービス php-fpm 開始 bExit=`エコー $?` if [[ ${bExit} != 0 ]] ; それでは echo -e "e[0;31;1mPHP の拡張機能のインストールに失敗しました! e[0m" 出口 1 その他 echo -e "e[0;34;1m頑張ってください! PHP 用拡張機能のインストールは終了です! e[0m" フィ } #ダウンロードのヒント 関数 DownloadTip() { if [[ ${cDownload} == "on" ]] ; それでは echo -e "e[0;35;1mダウンロードがオンになっています。パッケージはウェブサイトからダウンロードされます。ネットワークが機能していることを確認してください。e[0m" その他 echo -e "e[0;30;1mダウンロードはオフになっています。パッケージが存在していることを確認してください。e[0m" #if ダウンロードがオフの場合、SVN からダウンロードできるようになりました。 フィ if [[ -f ${cOtherOfflinePackageFile} ]] ; それでは tar -xzvf ${cOtherOfflinePackageFile} -C ${cInstallFile} フィ } #この関数は、最後の行の上にstringを挿入することができます #これには 2 つのパラメータがあり、1 つは string、もう 1 つは file パスです。 #string すべての行は '|' で除算する必要があります 関数 InsertStrAboveLastLine() { oldIFS=$IFS IFS=| のアイテム $1 やります iInsertLine=`awk 'END{NR を印刷}' $2` cNewItem=`echo ${item} | sed '/^$/d'` if [[ ${cNewItem} != "" ]] ; それでは #エコーこれはヌルです #else #エコー item:${cNewItem} sed -e "${iInsertLine} i ${cNewItem}" -i $2 フィ #iInsertLine=`awk 'END{print NR}' ${cTestFile}` #sed -e "${iInsertLine} i ${item}" -i ${cTestFile} 完了 IFS=$oldIFS } #@desc: iptable ルールを設定する #@param: 無効 #@return: 無効 関数 SetIptables() { Arr_OpenPortList="${1}" echo now will config iptables, open port list is: PrintArrList "${Arr_OpenPortList}" for port in ${Arr_OpenPortList} do iptables -I INPUT -i eth0 -p tcp --dport ${port} -j ACCEPT iptables -I OUTPUT -o eth0 -p tcp --sport ${port} -j ACCEPT done /etc/init.d/iptables save service iptables restart } #@desc: print array list #@param: array #@return void function PrintArrList() { Arr_List="${1}" for item in ${Arr_List} do echo -e "\e[0;33;1m${item}\e[0m" done } #@desc:print use dir str #@param: string dirname #@return: void function PRINTUSEDIR() { cDirName=$1 echo ${cDirName} is found, use it and make uninstall. cd ${cDirName} && make uninstall } #@desc print red error and exit #@param string $cErrorStr #@return void function PRINTERR() { cErrorStr=${1} echo -e "\e[0;31;1mERROR:${cErrorStr}\e[0m" exit 1 } #@desc print yellow warning and not exit #@param string $cWarningStr #@return void function PRINTWARNING() { cWarningStr=${1} echo -e "\e[0;33;1mWARNING:${cWarningStr}\e[0m" } #create install file if [[ $cCommand != -base ]] ; then `mkdir -p ${cInstallFile}` bInstallFile=`echo $?` if [[ $bInstallFile != 0 ]] ; then echo -e "\e[0;31;1mmake ${cInstallFile} file is failed! \e[0m" exit else cd ${cInstallFile} fi fi ###################main################## if [[ $cCommand == "-base" ]] ; then DownloadTip # if [[ ${cDownload} == "off" ]] ; then # echo Download is off,please modify it. # exit # else InstallBasePackage #fi elif [[ $cCommand == "-m" || "--mysql" == ${cCommand} ]] ; then DownloadTip InstallMysql elif [[ $cCommand == "-n" || "--nginx" == ${cCommand} ]] ; then DownloadTip InstallNginx elif [[ $cCommand == "-p" || "--php" == ${cCommand} ]] ; then DownloadTip InstallPHP elif [[ $cCommand == "--test" ]] ; then InsertStrAboveLastLine "|1|2|3|4|5|" /home/test.txt else DownloadTip InstallBasePackage sleep 3 InstallMysql sleep 3 InstallPHP sleep 3 InstallNginx sleep 3 SetIptables "${Arr_OpenPortList}" exit 0 fi install_web_develop.sh

2、安装官方基本框架

使用官方提供的基础骨架进行安装,十分便利,我想有许多的朋友还不知道吧。

  cd ~/<span>work #进入到你的工作目录,这里只是一个例子
  git clone https:</span><span>//</span><span>github.com/viticm/ZendSkeletonApplication</span>
<span>  cd ZendSkeletonApplication
  php composer.phar self</span>-<span>update
  php composer.phar </span><span>install</span><span> # 正式开始安装zf2,网速慢的请耐心等待
  </span><span>mkdir</span> /data/www/zf2/ && <span>cp</span> ../ZendSkeletonApplication<span>/*</span><span> /data/www/zf2/ -r # 把当前目录拷贝到网站目录下</span>
ログイン後にコピー

php composer.phar self-update #运行截图

php composer.phar install #运行截图,如果你无法访问外网的话,该文章对你的帮助就不太大了

3、配置你的nginx.conf

如果你用我的脚本安装,则配置文件为/usr/local/nginx/conf/nginx.conf

<span>  server {
    listen </span>80<span>;
    server_name zf2.local.com; </span><span>#</span><span>域名</span>
    root /data/www/zf2/public; <span>#</span><span>你的网站目录</span>
<span>    index index.php;
    </span><span>#</span><span>charset utf-8;</span>
    location ~* \.(js|ico|gif|jpg|png|css|jpeg|<span>swf)$ {
      access_log off;
      expires 2d;
    }

    location </span>/<span> {
      </span><span>if</span> (!-<span>f $request_filename) {
        rewrite </span>^(.+)$ /index.php?$1&<span> last;
      }
    }
  
    location </span>~<span> \.php$ {
      </span><span>#</span><span>root /var/www/html/public;</span>
      fastcgi_pass 127.0.0.1:9000; <span>#</span><span>如果你的php-fpm的监听端口不是这个,请设置</span>
<span>      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
    }

    </span><span>#</span><span> deny access to .htaccess files, if Apache&rsquo;s document root</span>
    <span>#</span><span> concurs with nginx&rsquo;s one</span>
    <span>#
</span>    location ~ /<span>\.ht {
      deny all;
    }
  }</span>
ログイン後にコピー

4、开始浏览你的网站

  到此zend framework 2的开发环境就彻底搭建完成了。

  将域名和你的IP绑定,或更改host添加192.168.200.132 zf2.local.com到你的配置中。

以Zend Framework222框架与php54搭建工程,放入Apache服务器的htdocs后,不可以访问工程内的页面

入口文件
下面添加
ini_set('display_error','on');error_reporting(E_ALL);看看有没什么提示?

一般来说是缺少扩展才会空白。
还有上传的时候的权限问题

 

教LINUX下的Zend Framework配置问题 - PHP框架开发

同问。请高手解答 腾讯soso
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/869241.htmlTechArticle搭建PHP官方框架zend framework 2(LINUX),zendframework 在五花八门的语言里,PHP作为我第一个觉得欣赏的理由,就是它的简单和快捷,因为它封...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? Apr 06, 2025 am 12:02 AM

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

See all articles