关于一个 php 报错的问题

2016-06-30 16:12:47 +08:00
 william23

首先 本地环境 wnmp 和虚拟机 lnmp 跑下来都没问题

但是放到了线上,突然报了这个错误

FastCGI sent in stderr: "PHP message: PHP Parse error: syntax error, unexpected '@'

而且不仅仅是一处,这个 @是用来加载文件的,本身是没有语法错误的。

所以没有思路,所以发帖求助

4063 次点击
所在节点    PHP
26 条回复
cxbig
2016-06-30 18:18:46 +08:00
@william23
检查一下 php-fpm 版本和各系统的文件编码
然后有没有什么相关的缓存系统?清空或重启一下
realpg
2016-06-30 18:36:22 +08:00
@william23
1. phpinfo() 看一下当前生效的 php.ini 在哪里
然后去掉所有解释性注释把有效配置(包含注释的有用配置)贴上来
widdy
2016-06-30 19:03:55 +08:00
权限呢,可以把应用目录权限改改看看。
william23
2016-06-30 20:00:15 +08:00
@widdy 权限是所有的, chmod 777 -R 过了
notgod
2016-06-30 20:09:21 +08:00
这么弱智的问题.... 我都不好意思说你
你玩 PHP 文档看过吗?

import("@.ORG.IpLocation");
这里的 . 因为双引号的关系 被解析为连接符 所以报 @开始的错误
只有单引号 才可以不解析内容 直接输出

问个问题代码还藏着掖着 指望别人猜?
什么本地能运行 线上不能运行,
你这么写 如果 php.ini 和安装的 php 源一致 能运行的纯粹是灵异问题

<?php
class MemberModel extends Model {

public function recordqq($nickname,$figureurl,$gender)
{
$ip = get_client_ip();
import('@.ORG.IpLocation');// 导入 IpLocation 类
$Ip = new IpLocation('UTFWry.dat'); // 实例化类 参数表示 IP 地址库文件
$area = $Ip->getlocation($ip); // 获取某个 IP 地址所在的位置
$user = $this->getByNickname($nickname);
print_r($user);
if(!empty($user)){
$data['lastloginip'] = $area['ip'];
$data['logincount'] = array('exp','(logincount+1)');
$data['lastloginaddress']=$area['country'];
$data['lastlogintime'] = time();
$this->save($data);
}else{
$data['nickname'] = $nickname;
$data['avatar'] = $figureurl;
$data['gender'] = $gender;
$data['lastloginip'] = $area['ip'];
$data['lastloginaddress']=$area['country'];
$data['lastlogintime'] = time();
$this->add($data);
}
}
}
?>
william23
2016-06-30 21:08:26 +08:00
@notgod 额。。并不是你想的这样,这个错其他地方并没有报,也是 linux 的环境,所以觉得和代码是无关的,是希望注意力集中在不是代码的地方,这个代码 apache 是 ok 的, windows 上的 nginx 也是 ok 的,虚拟机的 nginx 也是 ok 的,但是线上的 nginx 是不 ok 的,就是这样子,如果报错的话,我想起码虚拟机的 nginx 也会报同样的错吧,所以觉得会不会是什么配置文件的问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/289371

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX