ข้อผิดพลาดเริ่มต้น Yii2 บน PHP7

ฉันมีปัญหาเมื่อพยายามเปลี่ยนโปรเจ็กต์จากสภาพแวดล้อม dev ไปเป็น prod โปรเจ็กต์นี้เป็นที่เก็บ git ที่ฉันส่งไปยังเซิร์ฟเวอร์ของฉัน ตอนนี้ฉันต้องเปลี่ยนเป็นการใช้งานจริงและฉันพยายาม runphp init บนเซิร์ฟเวอร์ แต่ทุกครั้งที่ฉันได้รับ ข้อผิดพลาดเดียวกัน:

Parse error: syntax error, unexpected T_FUNCTION in /my/root/path/init on line 70

โดยที่ /my/root/path/ เป็นพาธพื้นฐานที่ฉันกดโค้ด

มีคนมีความคิดเกี่ยวกับข้อผิดพลาดนี้หรือไม่?


person MarBer    schedule 17.11.2016    source แหล่งที่มา
comment
แสดงรหัสประมาณบรรทัด 70   -  person Bizley    schedule 17.11.2016
comment
ขออภัย นี่คือรหัส: array_walk($skipFiles, function(&$value) use($env, $root) { $value = "$root/$value"; }); เหมือนที่ฉันเคยเห็นเป็นไปตามเอกสาร PHP   -  person MarBer    schedule 17.11.2016
comment
เวอร์ชัน PHP บนเซิร์ฟเวอร์เป้าหมายคืออะไร?   -  person Bizley    schedule 17.11.2016
comment
เวอร์ชันคือ PHP 7.0   -  person MarBer    schedule 17.11.2016


คำตอบ (1)


ตามคำตอบก่อนหน้าของฉันและความคิดเห็น:

พยายาม

array_walk($skipFiles, function(&$value, $key, $data) {
    $value = $data[1] . '/' . $value;
}, [$env, $root]);

@Marber: ส่งกลับข้อผิดพลาดเดิม วิธีแก้ไขที่คล้ายกันคือ function resolveBug($value) { $value = "$root/$value"; } array_walk($skipFiles, resolveBug($value)); และวิธีนี้แก้ไขจุดบกพร่อง แต่ขั้นตอนสร้างข้อผิดพลาดอีกครั้งในบรรทัด 81: Parse error: syntax error, unexpected '['... and the code is $callbacks = ['setCookieValidationKey', 'setWritable', 'setExecutable', 'createSymlink'];

ฉันเดาว่ามี PHP 7 ทางด้าน CGI และ CLI คือ PHP ‹ 5.3 และนั่นคือสาเหตุที่คำสั่งคอนโซลไม่ทำงาน

ตรวจสอบเวอร์ชัน PHP คอนโซลของคุณโดยการเรียกใช้

php -v

ในคอนโซล

person Bizley    schedule 17.11.2016
comment
ส่งกลับข้อผิดพลาดเดียวกัน วิธีแก้ไขที่คล้ายกันคือ function resolveBug($value) { $value = "$root/$value"; } array_walk($skipFiles, resolveBug($value)); และวิธีนี้จะแก้ไขข้อบกพร่อง แต่ขั้นตอนสร้างข้อผิดพลาดอีกครั้งในบรรทัด 81: Parse error: syntax error, unexpected '['... และรหัสคือ $callbacks = ['setCookieValidationKey', 'setWritable', 'setExecutable', 'createSymlink']; - person MarBer; 17.11.2016
comment
ขอบคุณสำหรับคำตอบ ตอนนี้ฉันรู้ปัญหาแล้ว ฉันได้สร้างแอปพลิเคชันบนเซิร์ฟเวอร์ด้วย CGI PHP 7.0 แต่เมื่อฉันเรียกใช้ php init ฉันคิดว่าการดำเนินการได้รับการจัดการโดย php 5.2.17 เวอร์ชันที่ส่งคืนโดย php -v ขอบคุณสำหรับการสนับสนุน! - person MarBer; 17.11.2016