- Linux + Apache + Mysql + PHP 这套环境经常会用到 , 下面记录点东西 .
- 公司找人开发的 PHP 网站 , 网站做完他们在 windows 平台上测试没有问题 , 可是发给我后 , 我在 Linux 上测试不能访问 .
- 网页提示 : 错误信息 - 500 , 服务器尝试执行请求时遇到了意外 .
- 网站错误日志提示 : PHP Parse error: syntax error, unexpected end of file in 某个 php 文件的最后一行 .
- 分析 : 文件最后一行是个 ?> 正常的 php 结束 . 既然网站开发的人员测试没有问题 , 那么 php 代码应该是正确的 , 范不着拿这个来糊弄人吧 ?
- 可是为什么会提示语法错误呢 ?
- 我跟他们核对过各软件版本信息 , 都说没有问题 , 他们就是说我环境有问题 , apache 我什么也没有配置 , 执行 phpinfo() 也可以拿到结果 , 拿 php
- 代码测试连接数据量也正常 .
- 接着我拿着这个错误去 baidu 、google 终于找到了答案 :
- The error may caused by a missing curly bracket in PHP script coding. Beside, it may also caused by error in PHP coding
- in class definition, as in PHP, a class definition cannot be broke up and distributed into multiple files,
- or into multiple PHP blocks, unless the break is within a method declaration.
- But more commonly, the error is often caused by the use of Short Open tags in PHP,
- To use short open tags, it must be enabled in PHP.INI. Search for short_open_tag in PHP.INI, and change the value to On.
- 我是这样理解的 : 发生这种情况多半是开发人员语法不规范 , 不仔细检查 , 发生漏写 ; } ?> 等低级错误 ,导致语法报错 .
- 上面也说了 ,修改 php.ini 文件的 short_open_tag 的值等于 On 即可 ( 因为我并不是 php 开发人员 , 几千行代码我也找不到哪漏了 ).
- vim /usr/local/php/php.ini
- 211 short_open_tag = On ## 大致在这个位置 , 可以通过搜索找到这行 将原来的 Off 改为 On , 重启 apache 即可
- 还有一个小问题 : apache 的运行用户跟站点目录的属主、属组不一致 .
- 这样会导致一个问题 , 例如 apache 默认是以 daemon 这个用户来运行的 , 如果你没有改他 , 那么你上传来的网站目录的属主、属组为 root 或其他普通
- 用户 , 目录权限为 drwxr-xr-x. , 也就是说运行 apache 的 daemon 这个用户对站点目录没有写入权限 , 那么你登陆网站后台的时候 ,可能就会无法登陆
- 解决这个问题 , 当然你可以 chmod -R 777 站点目录 ,但是这样并不安全 ,所以还是规范点来 .
- 还有就是 : 编译安装的 apache 跟 yum 安装的 mysql , 在编译 php 的时候 , 直接 --with-mysql --with-pdo-mysql 就可以 , php 会自动去默认路径找
- mysql (/var/lib/mysql). 还有一个就是 php 的时区默认是错误的 , 要改为 date.timezone = Asia/Shanghai .
- ## 希望对看到的朋友能有所帮助 !
- 最新活动: 2016-08-24 11:31
- 浏览: 1511
- 关注: 17 人
编辑回复