Parse error: syntax error, unexpected $end on line 1
Parse error: syntax error, unexpected $end on line 1
我正在编写一个与 MailChimp 的 API 集成的 wordpress 插件,以将电子邮件地址存储在 MailChimp 列表中。
我有一个 'store-address.php' 运行 通过 AJAX 提交的表格。
当 AJAX 在 local 或 GoDaddy WordPress 安装上 url 时,插件工作。但在 'MediaTemple.net'.
上托管的暂存站点上不起作用
当我对 'store-address.php' 进行 ajax 调用时,我收到此错误...
Parse error: syntax error, unexpected { in /wp-content/plugins/plugin-name/mailchimp-api/inc/store-address.php on line 1
这是我的 ajax 函数
$('#subscribe').submit(function(e) {
$.ajax({
url: $plugin_url '/plugin-name/mailchimp-api/inc/store-address.php',
data: 'ajax=true&email=' + escape($('#email').val()),
success: function(msg) {
$('#response').html(msg);
}
});
return false;
});
我的 'store-address.php' 看起来像这样。
<?php
if(session_id()==''){
session_start();
}
function storeAddress(){
/*
* Validation
*/
if(!$_GET['email']){ return "No email address provided"; }
if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/i", $_GET['email'])) {
return "Email address is invalid";
}
require_once('MCAPI.class.php');
/*
* get MailChimp API details from the plugin settings stored in the session.
*/ $mcKey = $_SESSION['mc_api_key'];
$mcID = $_SESSION['mc_list_id'];
$api = new MCAPI($mcKey);
$list_id = $mcID;
if($api->listSubscribe($list_id, $_GET['email'], '') === true) {
return 'Success! Check your email to confirm sign up.';
}else{
return 'Error: ' . $api->errorMessage;
}
}
/*
* If being called via ajax, autorun the function
*/
if($_GET['ajax']){ echo storeAddress(); }
?>
php版本5.5
正如我之前提到的,此代码适用于本地环境和 goDaddy 托管站点。只是 不在 MediaTemple 我也扫描了代码以查找任何 PHP 语法错误,但我找不到任何东西。
任何帮助或指向正确方向的信息都是天赐之物。
谢谢
第 1 行意外 $end
意外的 $end
表示 {
花括号 }
不匹配,因此未闭合的代码或控制块。
如果解析器抱怨 line 1
,那么这只有在您的 php 脚本确实只是一行时才会发生。第 1 行中的初始 <?php
不可能自行触发。
发生这种情况的唯一方法是换行符不匹配。 PHP 只关心 LF (0x0A
)。如果您正在使用经典 Mac OS 或默认使用的编辑器进行开发,则 CR (0x0D
) 可能会用于换行. CRLF 的旧 DOS/Windows 组合也可以。但那不是你所拥有的。
本质上,虽然代码在您的编辑器中正确显示,但 PHP 会将其视为:
<?php⏎if(session_id()=='')⏎{ session_start();⏎}⏎function storeAddress(){⏎// Validation⏎if(!$_GET['email']){ ...
仅此而已。回车returnsCR不生效。 PHP 会理解前几条语句,但第一个注释 // Validate
只是掩盖了其余代码。这就是为什么打开的函数声明导致悬空的“$end
”。
该错误是由于 FileZilla 的传输类型被设置为 "Auto" 而导致换行中断。
将传输类型切换为 "Binary" 并重新启动 FileZilla 后,我重新上传了插件,一切正常。
资源:
Filezilla removes line breaks on php files
我正在编写一个与 MailChimp 的 API 集成的 wordpress 插件,以将电子邮件地址存储在 MailChimp 列表中。
我有一个 'store-address.php' 运行 通过 AJAX 提交的表格。
当 AJAX 在 local 或 GoDaddy WordPress 安装上 url 时,插件工作。但在 'MediaTemple.net'.
上托管的暂存站点上不起作用当我对 'store-address.php' 进行 ajax 调用时,我收到此错误...
Parse error: syntax error, unexpected { in /wp-content/plugins/plugin-name/mailchimp-api/inc/store-address.php on line 1
这是我的 ajax 函数
$('#subscribe').submit(function(e) {
$.ajax({
url: $plugin_url '/plugin-name/mailchimp-api/inc/store-address.php',
data: 'ajax=true&email=' + escape($('#email').val()),
success: function(msg) {
$('#response').html(msg);
}
});
return false;
});
我的 'store-address.php' 看起来像这样。
<?php
if(session_id()==''){
session_start();
}
function storeAddress(){
/*
* Validation
*/
if(!$_GET['email']){ return "No email address provided"; }
if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/i", $_GET['email'])) {
return "Email address is invalid";
}
require_once('MCAPI.class.php');
/*
* get MailChimp API details from the plugin settings stored in the session.
*/ $mcKey = $_SESSION['mc_api_key'];
$mcID = $_SESSION['mc_list_id'];
$api = new MCAPI($mcKey);
$list_id = $mcID;
if($api->listSubscribe($list_id, $_GET['email'], '') === true) {
return 'Success! Check your email to confirm sign up.';
}else{
return 'Error: ' . $api->errorMessage;
}
}
/*
* If being called via ajax, autorun the function
*/
if($_GET['ajax']){ echo storeAddress(); }
?>
php版本5.5
正如我之前提到的,此代码适用于本地环境和 goDaddy 托管站点。只是 不在 MediaTemple 我也扫描了代码以查找任何 PHP 语法错误,但我找不到任何东西。
任何帮助或指向正确方向的信息都是天赐之物。 谢谢
第 1 行意外 $end
意外的 $end
表示 {
花括号 }
不匹配,因此未闭合的代码或控制块。
如果解析器抱怨 line 1
,那么这只有在您的 php 脚本确实只是一行时才会发生。第 1 行中的初始 <?php
不可能自行触发。
发生这种情况的唯一方法是换行符不匹配。 PHP 只关心 LF (0x0A
)。如果您正在使用经典 Mac OS 或默认使用的编辑器进行开发,则 CR (0x0D
) 可能会用于换行. CRLF 的旧 DOS/Windows 组合也可以。但那不是你所拥有的。
本质上,虽然代码在您的编辑器中正确显示,但 PHP 会将其视为:
<?php⏎if(session_id()=='')⏎{ session_start();⏎}⏎function storeAddress(){⏎// Validation⏎if(!$_GET['email']){ ...
仅此而已。回车returnsCR不生效。 PHP 会理解前几条语句,但第一个注释 // Validate
只是掩盖了其余代码。这就是为什么打开的函数声明导致悬空的“$end
”。
该错误是由于 FileZilla 的传输类型被设置为 "Auto" 而导致换行中断。
将传输类型切换为 "Binary" 并重新启动 FileZilla 后,我重新上传了插件,一切正常。
资源: Filezilla removes line breaks on php files