首先 本地环境 wnmp 和虚拟机 lnmp 跑下来都没问题
但是放到了线上,突然报了这个错误
FastCGI sent in stderr: "PHP message: PHP Parse error: syntax error, unexpected '@'
而且不仅仅是一处,这个 @是用来加载文件的,本身是没有语法错误的。
所以没有思路,所以发帖求助
1
william23 OP 我是感觉不像代码的问题,更像配置的问题,但是 lnmp 的环境虚拟机也跑了,也没发现这个问题
|
2
lynnworld 2016-06-30 16:21:11 +08:00
不贴代码么?
|
3
qiayue 2016-06-30 16:22:26 +08:00
php 的版本跟你本地不一致,你用了某个比较旧的函数
|
4
realpg 2016-06-30 16:31:20 +08:00
代码报错不贴代码……
|
5
doushiyinweini 2016-06-30 16:42:18 +08:00
我瞎猜一下 allow_url_fopen
|
6
Scholer 2016-06-30 16:43:30 +08:00
我猜是 curl 要改成 curlFile
|
10
b821025551b 2016-06-30 17:19:30 +08:00
我想了好久 php 有 import 这个函数么?后来意识到这是 ThinkPHP 吧??
|
11
william23 OP @b821025551b 是的
|
12
qiayue 2016-06-30 17:23:50 +08:00
我之前以为你的 @ 是为了频闭函数的报错信息,所以猜你用了某个比较旧的函数,而你的线上环境是比较新版本的 PHP
|
13
william23 OP @realpg
这行报错会消失,但是又会有其他报错 报错信息 5 FastCGI sent in stderr: "PHP message: PHP Parse error: syntax error, unexpected '' . __URL__ . '' (T_CONSTANT_ENCAPSED_STRING) 报错行 $str .= ' <a href="' . __URL__ . '/tag/name/' . urlencode($tag) . '">' . $tag . '</a> '; 我觉得不是语法的问题,因为毕竟其他环境是 i 没影响的 |
15
xuxu 2016-06-30 17:35:40 +08:00
用单引号试试 import('@.ORG.IpLocation');
|
17
cxbig 2016-06-30 17:39:12 +08:00 1
先看 php 版本有没有不同
从错误看很可能用了特殊字符 看看代码在什么系统下写的,如果是 windows 要特别小心,建议用 sublime text 等编辑器, utf8 无 bom 存一遍。 或者用 PhpStorm 之类的 IDE 做一次静态代码分析 |
18
qiayue 2016-06-30 17:44:28 +08:00
应该就是线上 PHP 版本问题,初步怀疑是线上版本较低
|
19
william23 OP @cxbig 恩,我用的就是 phpstorm ,是没有语法报错的,在虚拟机的环境是 ubuntu 和线上是一样的,我先 check 下 php 的版本吧。
|
20
william23 OP |
22
realpg 2016-06-30 18:36:22 +08:00
|
23
widdy 2016-06-30 19:03:55 +08:00
权限呢,可以把应用目录权限改改看看。
|
25
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); } } } ?> |