標籤:
今天運行一個php項目時,突然發現訪問不了了。起因應該是mac系統升級,導致apache設定檔完全恢複到了預設狀態,一切歸零。作為一個經驗尚欠的前端,對這些後台配置完全是一竅不通,趕緊聯絡了小胖。最終經過小胖在遠方耐心的協助和指導下,完美解決了運行項目中所遇到的連環坑,折騰了一下午直到晚上八點多。或許對於後端來說,這完全是小菜一碟,然後對於我這個外行來說簡直是個災難。想想還是事必躬親的好,之前別人給我配伺服器環境的時候從來沒記住來龍去脈,經過今天這一番瘋狂操作和折騰,想必以後再遇到這種問題就不用去大費周章勞師動眾了。
趕緊把今天遇到的連環坑記錄下來,以防後患。
就以對話的形式展開吧。
我:小胖,為啥我的所有php項目通過localhost訪問頁面只顯示"it works"。
小胖:沒改設定檔的話,localhost只訪問預設的目錄。it works是服務開啟的預設頁。你把設定檔發給我看看。檔案名稱為httpd.conf,在/etc/apache2/下邊。
我:httpd.conf檔案
小胖:從httpd.conf檔案看來,項目入口檔案目錄應該為/Library/WebServer/Documents。DocumentRoot就是設定php項目訪問路徑,也就是說你應該把項目放在/Library/WebServer/Documents,而且Documents下要有個index.php或index.html檔案
我:可是我之前php預設項目路徑一直為/project/rorohtml5/php,怎麼發生改了?(突然意識到可能是系統升級,連伺服器設定檔也初始化了)是不是我系統升級初始化了設定檔?(一臉懵逼。。)
小胖:/Library/WebServer/Documents肯定是升級後改了吧。
我:那我把httpd.conf中的這兩個地方改成/project/rorohtml5/php是不是就ok了?其他地方不用改了?
小胖:恩恩 記得改完了重啟下伺服器。
我:好的。修改完後,sudo /usr/sbin/apachectl restart這樣重啟?
小胖:嗯嗯
我:改好了,也重啟了,但是好像還是有問題。
頁面顯示 Forbidden You donnot have permission to access / on this server
小胖:沒有許可權,檔案夾許可權。會不會是伺服器配置重寫沒開。去httpd.conf裡找到#LoadModule rewrite_module libexec/apache2/mod_rewrite.so,去掉#,再重啟伺服器。
我:去掉了,好像還是不行。
小胖:我再看看設定檔。那個
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
index.html後邊加個空格加個index.php
我:直接把原始碼輸出出來了,沒有解析。
小胖:AddType application/x-httpd-php .php,把這個加到設定檔中吧。
放在AddType application/x-compress .Z AddType application/x-gzip .gz .tg下邊
我:加在後邊了
似乎還是不行。
小胖:#LoadModule php5_module libexec/apache2/libphp5.so這個#也要去掉。有很多的模組都需要開啟。
我:去掉之後,似乎有點效果,但是還有報錯。
-
小胖:你資料庫啟動了嗎?
我:mysql啟動了。
小胖: 不會php配置也要改吧,你看看etc下的php.ini檔案。
我:兩個php.ini檔案哪個是?
小胖:你用編輯器開啟項目的index.php檔案,加echo phpinfo();die;我看看是用的哪個php.ini檔案。
我:
小胖:看到/etc沒得,沒有載入php配置。php.ini.default這個檔案改成php.ini。通過終端進入mysql控制台,輸入STATUS;擷取UNIX socket的值,把該值賦給php.ini裡邊的pdo_mysql.default_socket、mysql.default_socket、mysqli.default_socket三個變數即可。
我:mysql -uroot -p不起作用了,切換不到控制台模式?咋回事,之前可以的。(-p後邊不需要加內容)
小胖:mysql沒有添加到環境變數中去。終端輸入export PATH=${PATH}:/usr/local/mysql/bin指令添加即可。
我:OK。擷取到了UNIX socket,三個變數也賦值了,但是仍然有報錯。
小胖:緩衝問題。去runtime檔案夾裡的內容全部清空,然後給runtime設定許可權。在APP目錄下chmod -R 777 ./Runtime
我:終於可以訪問了。but,又遇到小問題了,只能訪問首頁 其他頁面報錯。真是一波剛平,一波又起啊。
小胖: 這個是重寫的問題。把這個裡邊的 AllowOverride None,none改成all 在重啟伺服器
<Directory "/project/rorohtml5/php"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn‘t give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.4/mod/core.html#options # for more information. # Options FollowSymLinks Multiviews MultiviewsMatch Any # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # AllowOverride FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. # Require all granted</Directory>
我:哇哦,我的天,終於好了。
付出總會有回報,上天是公平的。
php+mysql+apache項目運行所遇到的一系列配置問題