window10下搭建php的運行環境


轉載: https://blog.csdn.net/YOYOYOHUI/article/details/81433894

 

之前開發一直都是用的php集成環境(phpstudy,xampp等),沒有嘗試過使用php+mysql+apache在本地獨立搭建PHP運行環境,所以今天突然想試着搭建一下。首先我們需要的搭建工具有:

  • windows操作系統(我的電腦是win10)
  • apache
  • MySQL
  • php

 

1.Apache的安裝:

apache的下載地址http://www.apachelounge.com/download/,根據你的電腦配置下載

根據你的電腦配置來下載是32位的還是64位的。這里我在D盤創建了一個wamp的文件夾,將下載好的apache解壓在該目錄下。接下來以管理員的身份運行cmd,然后一步步進入到d:\wamp\Apache\bin目錄,在該目錄下執行httpd -k install 命令

我第一次執行httpd -k install 安裝命令是遇到了上圖的問題,那是應為在httpd.conf配置文件中的默認路徑是錯誤的,你手動改寫成你實際路徑即可。

過程中我也遇到了apache不能安裝的情況,后來查了一下是之前安裝的apache已經被設置為系統服務,刪除即可。

刪除操作如下(注意也是以管理員身份操作)

操作:在開始啟動欄輸入services.msc,打開系統服務列表:如圖

當然期間我也遇到其他的問題:

右鍵上圖中的Apache2.4-》屬性

發現可執行文件的路徑是錯誤的,還是之前集成環境的路徑(當然這里已經是我修改過后的)。

這里是可修改的,方式如下:

開始啟動搜索欄中輸入"regedit"打開注冊表 在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 下找到所需的服務Apache2.4,將其 "ImagePath"鍵值更改為實際路徑即可。當然這里的介紹只是針對你的apache啟動不了的情況,如果你執行了

sc delete apache2.4

這條命令,你是不用執行以上操作的。當你執行完httpd -k install,出現以下內容時,說明你本地的apache已經安裝成功了

紅框中的錯誤根據我的判斷是可以忽略的,

當然你也可以解決出現這種錯誤:

localhost.localdomain. Set the 'ServerName' directive globally to suppress this message apache 啟動出現這種錯誤的解決方法: 將 apache 的配置文件httpd.conf中的 ServerName 改成可用域名或如下配置 ServerName localhost:80

你在瀏覽器中輸入http://localhost,如果出現以下頁面,說明你的apache已經安裝成功了。

安裝參考鏈接參考鏈接

2.php的安裝

下載地址:https://windows.php.net/downloads/releases/

然后將下載的文件解壓到wamp目錄下的php文件夾(不要下載非線程安全的版本,里面沒有phpX(5,7)apache2_4.dll的拓展文件),配置apache的時候要用到。

3.下載MySQL

接下來就是下載MySQL鏈接地址https://dev.mysql.com/downloads/mysql/

我是下載的MySQL5.7版本的,根據你的操作系統下載32bit或者64bit

將下載的文件解壓到wamp目錄下的mysql文件夾。

4.修改配置文件

打開D:/wamp/apache/conf文件夾下的httpd.conf文件

找到#LoadModule xml2enc_module modules/mod_xml2enc.so這一行,在這一行下面添加一下內容

PHPIniDir "C:/wamp/php5.6/"
LoadModule php5_module "C:/wamp/php5.6/php5apache2_4.dll"    (注意點如果是安裝的php7以上版本,則這里需要修改php7_module

然后再找到 AddType application/x-gzip .gz .tg 這一行再下面添加

AddType application/x-httpd-php .php

apache的配置算是完成了。

然后再打開D:/wamp/php 文件夾下的php.ini-developement文件的文件名改為php.ini,然后對文件進行編輯,

; extension_dir = "./"
; On windows:
extension_dir = "d:/wamp/php5.6/ext"

date.timezone = Asia/Shanghai

取消此行的注釋,並且填寫ext文件夾的實際路徑.

然后就是開啟一些php的擴展文件

接下來就是配置MySQL了,打開進入到D:/wamp/mysql目錄下新建my.ini配置文件,貼入一下內容

[mysql]
 
# 設置mysql客戶端默認字符集
 
default-character-set=utf8 
 
[mysqld]
 
#設置3306端口
 
port = 3306 
 
# 設置mysql的安裝目錄
 
basedir=D:\wamp\mysql
 
# 設置mysql數據庫的數據的存放目錄
 
datadir=D:\wamp\mysql\data
 
# 允許最大連接數
 
max_connections=200
 
# 服務端使用的字符集默認為8比特編碼的latin1字符集
 
character-set-server=utf8
 
# 創建新表時將使用的默認存儲引擎
 
default-storage-engine=INNODB

  

 

以管理員的身份運行cmd,進入到D:/wamp/mysql/bin目錄下安裝MySQL服務,輸入mysqld install(注意:是mysqld不是mysql)

命令行顯示該行,表示安裝成功

接下來輸入mysqld --initialize創建data文件夾,否則后面無法啟動MySQL服務;

然后輸入net start mysql就可以啟動MySQL服務了

輸入mysql -u root -p,然后輸入密碼即可連接MySQL服務

可能會出現以下錯誤

這里現在下載的MySQL版本默認都不支持無密碼驗證,需要我們手動設置修改,打開my.ini文件,在文件末尾加上一句:

skip-grant-tables

  

然后重啟MySQL(net stop mysql/net start mysql),此時可以不用密碼進行連接,但許多功能受到了限制。先連接MySQL,然后選擇user數據庫修改root用戶的密碼。

update user set authentication_string=password("你設置的密碼") where user = "root";

  

斷開MySQL連接,將設置文件my.ini文件里剛剛加入的skip-grant-tables刪除,重啟MySQL服務,使用你設置的密碼登陸。

 

涉及點: 

  1. 創建一個MySQL用戶

create user exuser@'%' identified by 'exPass@352';

  

mysql> show create user xing@'%';
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CREATE USER for xing@%                                                                                                                                            |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CREATE USER 'xing'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+

  

create user tt@'%' identified by '123456' password expire interval 30 day; //創建一個有過期時間的賬號

 

select user,host,password_expired,password_last_changed,password_lifetime from user;  //確定最后一次密碼修改時間

show global variables like 'default_password_lifetime';  //查看密碼過期時間

show create user tstuser@'localhost'; //確定用戶是不是用的mysql全局的密碼過期策略


最終確定是否密碼過期

  

修改密碼以能夠在客戶端登陸:set password for root@localhost = password('123');
修改root密碼永不過期:ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

   2. PHP文件解析問題

    剛開始安裝成功之后,訪問的時候Apache並不能解析PHP文件

    

#LoadModule vhost_alias_module modules/mod_vhost_alias.so   //去除注釋

LoadModule php5_module "D:/Develop/PHP/php5apache2_2.dll" //解析PHP文件

PHPIniDir "D:/Develop/PHP" // php根目錄

AddType application/x-httpd-php .php .html .htm  // 支持的文件類型

DirectoryIndex index.php index.html // 設置目錄默認文件

  

 

注意點:

  1. 如果配置出現問題(MySQL,PHP)則修改之后進行重新啟動Apache

httpd -k restart
httpd --help 查看常用命令

  2. 數據庫無法遠程連接

grant all privileges on *.* to 'root'@'%' identified by '123456'; 
重新加載權限
flush privileges;

  

 

問題總結

  1. 

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

  這種情況是因為密碼有一個過期時間,可以通過命令查看  default_password_lifetime 

show variables like 'default_password_lifetime';

  解決:

alter user user() identified by "123456";

  2. 有時候啟動Apache的時候會報錯,可能是io錯誤,或者是日志等錯誤,最終都是因為不是超級管理員導致的錯誤,所以運行Apache的時候要使用超級管理員的權限運行可以解決許多問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM