今天运行一个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项目运行所遇到的一系列配置问题的更多相关文章

  1. linux(center OS7)安装JDK、tomcat、mysql 搭建java web项目运行环境

    一.安装JDK 1.卸载旧版本或者系统自带的JDK (1)列出所有已安装的JDK rpm -qa | grep jdk (2)卸载不需要的JDK yum -y remove 安装包名称 2.下载并解压 ...

  2. Atitit linux获取项目运行环境版本

    Atitit linux获取项目运行环境版本 1.1. Nginx版本1 1.2. Php版本1 1.3. Mysql版本2 1.4. Redis版本2 1.1. Nginx版本 [root@iZ25 ...

  3. 使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化

    一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...

  4. 云服务器+tomcat+mysql+web项目搭建部署

    云服务器+tomcat+mysql+web项目搭建部署 1.老样子,开头墨迹两句. 作为我的第二篇文章,有很多感慨,第一篇人气好低啊,有点小丧气,不过相信我还是经验少,分享的都是浅显的,所以大家可能不 ...

  5. 【转载】使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化

    一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...

  6. 使用xampp将angular项目运行在web服务器

    需求 在开发angular项目时,因为需要做自适配以适应不同的屏幕,而我的电脑只有1366的.所以我现在需要在本地将angular项目运行在xampp上,然后用手机开热点,给本机和另一台大屏电脑或手机 ...

  7. 如何成为一名合格的Apache项目Committer,参与Apache开源贡献的正确姿势

    近日,孙金城老师在 "Open Source Promotion Plan - Summer 2020" 开源软件供应链点亮计划做了<如何成为一名合格的Apache项目Com ...

  8. Django 使用mysql 创建项目

    一.安装 mysql 和 mysqlclient 1. 安装 mysql ,https://www.jianshu.com/p/07a9826898c0 2. pip3 install mysqlcl ...

  9. MySQL之 InnoDB记录结构(转自掘金小册 MySQL是怎样运行的,版权归作者所有!)

    以下内容来自掘金小册 MySQL 是怎样运行的:从根儿上理解 MySQL 版权归原作者所有! 页是MySQL中磁盘和内存交互的基本单位,也是MySQL是管理存储空间的基本单位. 指定和修改行格式的语法 ...

随机推荐

  1. dojo/query源码解析

    dojo/query模块是dojo为开发者提供的dom查询接口.该模块的输出对象是一个使用css选择符来查询dom元素并返回NodeList对象的函数.同时,dojo/query模块也是一个插件,开发 ...

  2. [.net 面向对象编程基础] (21) 委托

    [.net 面向对象编程基础] (20)  委托 上节在讲到LINQ的匿名方法中说到了委托,不过比较简单,没了解清楚没关系,这节中会详细说明委托. 1. 什么是委托? 学习委托,我想说,学会了就感觉简 ...

  3. web前端职业规划(转)

    关于一个WEB前端的职业规划,其实是有各种的答案,没有哪种答案是完全正确的,全凭自己的选择,只要是自己选定了, 坚持去认真走,就好.在这里,我只是简要说一下自己对于这块儿内容的理解.有一个观点想要分享 ...

  4. [Spring框架]Spring AOP基础入门总结一.

    前言:前面已经有两篇文章讲了Spring IOC/DI 以及 使用xml和注解两种方法开发的案例, 下面就来梳理一下Spring的另一核心AOP. 一, 什么是AOP 在软件业,AOP为Aspect ...

  5. Atitit 图像扫描器---基于扫描线

    Atitit 图像扫描器---基于扫描线 调用范例 * @throws FileExistEx */ public static void main(String[] args) throws Fil ...

  6. Atitit paip.对象方法的实现原理与本质.txt

    Atitit paip.对象方法的实现原理与本质.txt 对象方法是如何实现的1 数组,对象,字典1 对象方法是如何实现的 这显然是一个对象方法调用.但对象方法是如何实现的呢?在静态语言中,因为有编译 ...

  7. Atitit 信用卡与会员卡(包括银行卡)的发展之路

    Atitit 信用卡与会员卡(包括银行卡)的发展之路 实现跨机构卡片内金额的流动解决方案 1.1. 财务卡片本质上都是会员卡1 1.2. 卡片的发展阶段1 2. 实现跨机构卡片内金额的流动解决方案(加 ...

  8. Atitit qzone qq空间博客自动点赞与评论工具的设计与实现

    Atitit qzone qq空间博客自动点赞与评论工具的设计与实现 Qzone发送评论的原理 首先,有个a标签, <a class="c_tx3" href="j ...

  9. EasyUI Field

    效果: JS: var sortIndex = $("#ListDiv").find(".datagrid-view2").find(".datagr ...

  10. vue隐藏APP启动时显示的{{}}

    vue隐藏APP启动时显示的{{}} vue组件在编译好之前会显示{{msg}},在官网上找到这个