簡體   English   中英

解析錯誤:語法錯誤,第1行意外的$ end

[英]Parse error: syntax error, unexpected $end on line 1

我正在編寫一個wordpress插件,它與MailChimp的API集成,用於在MailChimp列表中存儲電子郵件地址。

我有一個'store-address.php'在提交表單時通過AJAX運行。

當AJAX在本地或GoDaddy WordPress安裝上的url時,該插件可以正常工作。 但是不能在我的臨時站點上工作,它位於“MediaTemple.net”上。

當我對'store-address.php'進行ajax調用時,我收到此錯誤...

解析錯誤:語法錯誤,意外{在第1行的/wp-content/plugins/plugin-name/mailchimp-api/inc/store-address.php

這是我的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(); } ?> 

phpVersion 5.5

正如我之前提到的,此代碼適用於本地環境和goDaddy托管站點。 只是沒有在MediaTemple上我也掃描了任何PHP語法錯誤的代碼,我找不到任何東西。

任何正確方向的幫助或指向都是天賜之物。 謝謝

該錯誤是由於FileZilla的傳輸類型設置為“自動”而導致的,這會中斷換行符。

將傳輸類型切換為“二進制”並重新啟動FileZilla后,我重新上傳了插件,一切都很好。

資源: Filezilla刪除php文件的換行符

意外的$結束於第1行

意外的$end表示{花括號}不匹配,因此未封閉的代碼或控制塊不匹配。

如果解析器抱怨line 1 ,那么只有當你的php腳本確實只是一行時才會發生這種情況。 第1行中的初始<?php不可能單獨觸發它。

而這種情況發生的唯一方法是不匹配的換行符。 PHP只關心LF0x0A )。 如果您在經典Mac OS或默認編輯器上進行開發,則CR0x0D )可能會用於換行。 CR LF的舊DOS / Windows組合也可以工作。 但那不是你擁有的。

實質上,當代碼在編輯器中正確顯示時,PHP會將其視為:

<?php⏎if(session_id()=='')⏎{ session_start();⏎}⏎function storeAddress(){⏎// Validation⏎if(!$_GET['email']){ ...

就是這樣。 回車CR不起作用。 PHP將理解前幾個語句,但第一個注釋// Validate簡單地掩蓋了其余的代碼。 這就是為什么打開的函數聲明導致懸掛的“ $end ”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM