Nguyên tắc cơ bản để gỡ lỗi một cửa hàng Magento


81

Làm cách nào để gỡ lỗi cửa hàng Magento của tôi

Đây là một câu hỏi không quá liên quan đến chúng tôi bây giờ, nhưng đã có một trang web Magento SE tồn tại 5 năm trước, đây có lẽ sẽ là câu hỏi đầu tiên của chúng tôi. Đối với những người chỉ mới vào Magento hoặc không quen thuộc với nó - biết các nguyên tắc cơ bản của việc gỡ lỗi có thể là chìa khóa để loại trừ nguyên nhân của các vấn đề. Và mặc dù nó không liên quan đến chúng tôi bây giờ, chúng tôi đang đặt ra câu hỏi này xuất hiện với cách tiếp cận tự trả lời.

Giúp trang web của tôi là xuống!

  1. Là thiết kế của tôi có lỗi?
  2. Là một mô-đun bên thứ 3 có lỗi?
  3. Tại sao tôi không thể thấy lỗi?

Mỗi câu hỏi có thể dễ dàng được trả lời bằng cách làm theo cách tiếp cận được chuẩn hóa để gỡ lỗi mà ngay cả những người dùng cơ bản nhất cũng có thể hoàn thành. Bằng phương pháp loại bỏ các nguyên tắc cơ bản để gỡ lỗi một cửa hàng Magento.


5
Sử dụng một trình sửa lỗi tốt và trí thông minh của bạn ...
Sylvain Rayé

4
Đây có phải là một câu hỏi nghiêm trọng?
davidalger

5
Không, đó là một câu hỏi tự trả lời có chủ ý để giúp bóng lăn trên BETA này. Trao đổi ngăn xếp không chỉ cho phép tự trả lời các câu hỏi, mà còn tích cực khuyến khích nó blog.stackoverflow.com/2012/05/encyclopedia-stack-exchange . @sylvain Câu hỏi này hướng đến người dùng mới / thiếu kinh nghiệm để giúp bắt đầu quá trình gỡ lỗi
Ben Lessani - Sonassi

@sonassi Tôi không đánh giá thấp và bạn đã cấu trúc lại câu hỏi của bạn một cách rõ ràng hơn. Có lẽ tôi có thể giúp cho điều đó :) Tôi không biết rằng SE không chỉ là một câu hỏi và trả lời, rất tốt để biết. Về chủ đề chính, câu trả lời ở đây chỉ là bề mặt của hầu hết các vấn đề sâu hơn có thể xảy ra, đó là lý do tại sao tôi nói sử dụng trình gỡ lỗi và hiểu cách thức hoạt động của quy trình điều phối thực tập của Magento, bạn có thể giải quyết rất nhiều vấn đề sau khi bạn hiểu. Đó là 5 xu của tôi. Làm thế nào để giải quyết vấn đề với tính thuế, phương thức vận chuyển, tạo khối hoặc cách khác: gỡ lỗi! Nó cũng giúp để tìm hiểu quá trình thực tập.
Sylvain Rayé

2
Hiểu. Những gì tôi đã cố gắng giúp đỡ là các lỗi nghiêm trọng cơ bản hơn. Rõ ràng phạm vi cho các vấn đề là quá rộng cho một giải pháp duy nhất để trả lời. Quirks / lỗi nhỏ được chẩn đoán thông qua gỡ lỗi - nhưng đối với các lỗi nghiêm trọng - cần có một cách tiếp cận ít tế nhị hơn, như dưới đây. Và vâng, tôi đã điều chỉnh câu hỏi :)
Ben Lessani - Sonassi

Câu trả lời:


98

Gỡ lỗi là một chút nghệ thuật, nhưng một cái gì đó có thể dễ dàng được làm chủ bằng cách làm theo một chế độ đơn giản.

Thực hiện theo từng điểm cho đến khi bạn đạt được một giải pháp.


Kích hoạt lỗi PHP

Đây là chìa khóa cho hầu hết các vấn đề. Vì lý do bảo mật hoặc lý do khác, hiển thị lỗi PHP có thể bị tắt theo mặc định bởi cấu hình PHP của bạn.

Bạn có thể kích hoạt các lỗi với một giải pháp lâu dài hơn, hoặc chỉ là một cái gì đó tạm thời hơn.

Giải pháp lâu dài

Dành cho người dùng Apache / mod_php

Trong .htaccesstập tin gốc của tài liệu của bạn - chỉ cần thả cái này ở trên cùng.

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag  log_errors on
php_value error_log  /home/path/public_html/var/log/system.log

Dành cho người dùng Nginx / FastCGI

Trong cấu hình máy chủ ảo Nginx của bạn, trong lệnh cuối cùng location .php {hoặc trong fastcgi_paramstệp (nếu bạn có một chỉ định)

fastcgi_param PHP_VALUE  display_startup_errors=on;
fastcgi_param PHP_VALUE  display_errors=on;
fastcgi_param PHP_VALUE  html_errors=on;
fastcgi_param PHP_VALUE  log_errors=on;
fastcgi_param PHP_VALUE  error_log=/home/path/public_html/var/log/system.log;

Giải pháp tạm thời / phổ quát

Đối với bất kỳ nền tảng

Chỉnh sửa bootstrap Magento index.phptrong thư mục gốc của bạn và bỏ dòng sau:

#ini_set('display_errors', 1);

Kích hoạt chế độ nhà phát triển

Khi bạn gặp lỗi và bất ngờ nhấn trang "Báo cáo lỗi" và được cung cấp một chuỗi lỗi dường như vô dụng như 1184257287824- bạn có một vài tùy chọn.

Giải pháp lâu dài

Dành cho người dùng Apache / mod_php

Trong .htaccesstệp gốc tài liệu của bạn - chỉ cần thả cái này ở trên cùng.

SetEnv MAGE_IS_DEVELOPER_MODE true

Dành cho người dùng Nginx / fastcgi

Trong cấu hình máy chủ ảo Nginx của bạn, trong lệnh cuối cùng location .php {hoặc trong fastcgi_paramstệp (nếu bạn có một chỉ định)

fastcgi_param MAGE_IS_DEVELOPER_MODE true;

Giải pháp tạm thời / phổ quát

Chỉnh sửa bootstrap Magento index.phptrong thư mục gốc của bạn và làm cho ifcâu lệnh luôn luôn đúng hoặc được bật cho IP cụ thể của bạn.

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || true) {
  Mage::setIsDeveloperMode(true);
}

hoặc là

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || $_SERVER['REMOTE_ADDR'] == 'my.ip.add.ress') {
  Mage::setIsDeveloperMode(true);
}

Kiểm tra quyền của bạn

Quyền không chính xác sẽ gây ra vô số vấn đề, rất nhiều trong số đó không dễ tìm thấy ngay từ cái nhìn đầu tiên.

Ví dụ.
Nếu PHP không thể ghi vào ./mediathư mục và bạn đã bật kết hợp JS - Magento không thể tạo tệp kết hợp và URI duy nhất được liên kết cho phương tiện truyền thông. Vì vậy, thay vào đó, những gì bạn sẽ tìm thấy trong mã nguồn trình duyệt của mình là đường dẫn máy chủ đầy đủ đến tệp phương tiện /home/path/public_html/media/xxx

Mặt khác, trang web có thể hoạt động như bình thường - không có lỗi nghiêm trọng thực sự có thể nhìn thấy.

Xin lưu ý, thực tiễn này an toàn cho lưu trữ chuyên dụng nhưng có thể gây ra sự cố bảo mật với lưu trữ được chia sẻ nếu quy trình Apache không bị chroot'ed cho mỗi người dùng.

Trong ví dụ của chúng tôi, người dùng SSH / FTP là sonassi, người dùng Apache apachevà nhóm làapache

Thêm người dùng FTP / SSH vào nhóm Apache

Quan trọng nhất, chúng ta cần đảm bảo rằng người dùng FTP / SSH là một phần của nhóm Apache, trong ví dụ của chúng tôi, apache(nhưng cũng thường gặp www-data)

usermod -a -G apache sonassi

Tiếp tục thêm nhiều người dùng vào nhóm như bạn có cho FTP / SSH.

Đặt lại quyền ban đầu

Vì vậy, trước khi chúng tôi bắt đầu, hãy đảm bảo tất cả các quyền là chính xác.

chown -R sonassi:apache /home/path/public_html/
find /home/path/public_html/ -type d -exec chmod 775 {} \;
find /home/path/public_html/ -type f -exec chmod 664 {} \;

Làm cho những thay đổi vĩnh viễn

ACL và bit dính

ACL trong Linux cho phép chúng tôi xác định các quy tắc cụ thể, trong trường hợp của chúng tôi, các tệp quyền nào sẽ được kế thừa khi tạo. Một bit dính (được đề cập sau) sẽ đảm nhiệm việc kế thừa nhóm, nhưng không giúp với các quyền, đó là lý do tại sao chúng tôi sử dụng ACL.

Bắt đầu bằng cách bật hỗ trợ ACL trên phân vùng hoạt động, vui lòng đảm bảo Kernel của bạn được biên dịch với hỗ trợ ACL .

Phân vùng của bạn có thể /, /home, /varhay cái gì khác, thay thế cho phù hợp.

mount -o remount,acl /home

Bây giờ ACL đã được bật, chúng ta có thể đặt quy tắc ACL và nhóm bit dính:

setfacl -d -m u::rwx,g::rwx,o::rx /home/path/public_html/
chmod g+s /home/path/public_html/

Nhưng tôi không có hỗ trợ ACL

Nếu Kernel của bạn không hỗ trợ ACL, bạn cũng có thể sử dụng umask(đó là cài đặt thời gian chạy cho BASH, FTP và PHP) để đặt quyền truy cập tệp mặc định. Magento thường đặt umask(0)trong index.php, tuy nhiên, nó sẽ là vì lợi ích của bạn để thay đổi điều này.

Trong index.phpsự thay đổi của bạn , umaskdòng

umask(022);

Và trong môi trường BASH của bạn cho SSH, hãy đặt cái này trong .bashrchoặc.bash_profile

umask 022

Đối với máy chủ FTP của bạn, bạn sẽ cần đọc tài liệu cho nó, nhưng nguyên tắc là như vậy.


Hoàn nguyên chủ đề về mặc định

Có thể chủ đề hoặc gói của bạn chịu trách nhiệm cho vấn đề này. Quay trở lại một chủ đề Magento vanilla là một cách nhanh chóng để tìm hiểu.

** Điều này đi kèm với cảnh báo rằng một số mô-đun có thể phụ thuộc vào các tính năng chủ đề nhất định *

Thay vì thay đổi bất cứ điều gì thông qua bảng quản trị, việc đổi tên các thư mục vi phạm sẽ đơn giản hơn nhiều.

Qua SSH

mv ./app/design/frontend/myBrokenTheme{,.tmp}
mv ./skin/frontend/myBrokenTheme{,.tmp}

Hoặc thông qua ứng dụng khách FTP của bạn, duyệt qua và đổi tên gói của bạn thành một thứ khác. ví dụ.myBrokenTheme.tmp

Nếu điều này giải quyết vấn đề của bạn

Sau đó, bạn cần đào sâu hơn một chút về phần nào của mẫu có vấn đề. Vì vậy, khôi phục gói của bạn và thử sau đây, thử nghiệm giữa mỗi.

Về cơ bản, quy trình là dần dần kích hoạt các thư mục khi bạn duyệt qua cây tệp - cho đến khi bạn có thể tìm thấy tệp vi phạm.

  1. Đổi tên thư mục bố trí thành .tmp
  2. Đổi tên thư mục mẫu thành .tmp

Sau đó, nếu mang lại một bản sửa lỗi, hãy đổi tên tất cả các tệp trong thư mục bố trí thành .tmp- (đối với người dùng SSH ls | xargs -I {} mv {} {}.tmphoặc rename 's/^/.tmp/' *)

Sau đó dần dần kích hoạt từng tệp 1 cho đến khi giải quyết.

Nếu điều này không giải quyết vấn đề của bạn

Có khả năng rằng thư mục base/defaulthoặc enterprise/defaultthư mục của bạn đã bị ô nhiễm - và được thay thế tốt nhất bằng phiên bản sạch đã biết.

Bạn có thể làm điều này bằng cách tải xuống bản dựng Magento sạch và thay thế các thư mục của bạn khi cần thiết. Thông qua SSH bạn có thể làm điều này:

cd /home/path/public_html/
mkdir clean_mage
cd clean_mage
MAGENTO_VERSION=1.7.0.0
wget -O magento.tgz  http://www.magentocommerce.com/downloads/assets/$MAGENTO_VERSION/magento-$MAGENTO_VERSION.tar.gz
tar xvfz magento.tgz
cd /home/path/public_html/app/design/frontend
mv base{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/app/design/frontend/base .
cd /home/path/public_html/skin/frontend
mv base{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/skin/frontend/base .

Bạn cũng có thể tận dụng cơ hội đến diffhai thư mục nếu bạn muốn xác minh bất kỳ thay đổi nào.

diff -r base base.tmp

Lưu ý Phương pháp này sẽ gây ra nhiều lỗi hơn trong quá trình, vì sự phụ thuộc mô-đun chỉ ra sự tồn tại của các tệp cụ thể. Thật không may, mệnh của nó cho khóa học.


Vô hiệu hóa các mô-đun cục bộ

Theo mặc định, Magento định nghĩa PHP bao gồm đường dẫn để tải các lớp theo thứ tự sau

Local > Community > Core

Nếu một tệp trong Local - tải nó và không làm gì nữa.
Nếu một tệp trong cộng đồng - tải nó và không làm gì nữa.
Nếu một tập tin không thể được tìm thấy ở bất cứ nơi nào khác - tải nó từ lõi.

Một lần nữa, thay vì vô hiệu hóa các mô-đun thông qua bảng quản trị Magento, sẽ thực tế hơn khi thực hiện việc này ở cấp độ tệp.

Thông thường, để vô hiệu hóa mô-đun theo cách "phù hợp", bạn sẽ chỉnh sửa ./app/etc/modules/MyModule.xmltệp và cài đặt tương ứng <active>false</active>- tuy nhiên, điều này thực sự không ngăn một lớp tải.

Nếu một lớp khác mở rộng một lớp nhất định trong một mô-đun (bỏ qua mọi khai báo phụ thuộc Magento), nó sẽ vẫn được tải - bất kể tiện ích mở rộng có bị vô hiệu hóa hay không.

Vì vậy, một lần nữa, phương tiện tốt nhất để vô hiệu hóa một phần mở rộng là đổi tên thư mục.

Bắt đầu bằng cách vô hiệu hóa cục bộ

Chỉ cần đổi tên thư mục qua FTP hoặc sử dụng lệnh SSH sau đây

mv ./app/code/local{,.tmp}

Sau đó vô hiệu hóa cộng đồng

mv ./app/code/community{,.tmp}

Nếu vấn đề được giải quyết từ một trong hai

Sau đó, đó là một trường hợp hiểu được mô-đun cụ thể là lỗi bắt nguồn từ đâu. Như với ví dụ được đưa ra ở trên để chẩn đoán gói, quy trình tương tự được áp dụng.

Vì vậy, khôi phục thư mục X và thử các mục sau, kiểm tra giữa mỗi thư mục.

Về cơ bản, quy trình là dần dần kích hoạt từng thư mục (mô-đun) cho đến khi xảy ra lỗi

  1. Đổi tên tất cả các mô-đun trong thư mục thành .tmp(cho người dùng SSH ls | xargs -I {} mv {} {}.tmphoặc rename 's/^/.tmp/' *)
  2. Dần dần kích hoạt từng mô-đun từng cái một, bằng cách xóa .tmpkhỏi tên tệp

Nếu vấn đề không được giải quyết

Sau đó, có thể chính lõi bị ô nhiễm. Lõi PHP Magento chính bao gồm

./app/code/core
./lib

Vì vậy, một lần nữa, đổi tên các thư mục này và sao chép trong một biến thể sạch. Giả sử bạn đã tải xuống một phiên bản Magento sạch như trên, thông qua SSH, bạn có thể làm điều này:

cd /home/path/public_html/app/code
mv core{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/app/code/core .

Sau đó, nếu vấn đề vẫn không được giải quyết, thay thế libthư mục quá

cd /home/path/public_html
mv lib{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/lib .

Tại thời điểm này, cửa hàng Magento của bạn sẽ không có gì khác hơn là cài đặt vanilla với cơ sở dữ liệu được sửa đổi.

Một số mô hình thực sự vẫn được lưu trữ trong cơ sở dữ liệu (Ví dụ: tăng thứ tự) - vì vậy tại thời điểm này, nó trở thành một trường hợp thực hiện thủ công các chỉnh sửa đó. Cho đến nay, tất cả các bước trên đã có thể đảo ngược mà không có thiệt hại lâu dài. Nhưng nếu chúng ta cũng đang nhập một cơ sở dữ liệu Magento sạch - nó có thể chứng minh không thể đảo ngược (thiếu khôi phục bản sao lưu).


Hướng dẫn ở trên phục vụ để giúp bạn xác định lỗi; không sửa lỗi kết quả.

Nội dung sẵn sàng có nguồn gốc từ www.sonassi.com/ledgeledge-base/magento-debug- Processwww.sonassi.com/ledgeledge-base/stop-magento-permissions-errors-permanently


7
Tôi nghĩ rằng câu trả lời có thể hữu ích cho một số người dùng Magento nhưng nó nên được đánh dấu là một câu hỏi Q & A giống như cộng đồng vì người đăng đã tự trả lời câu hỏi ngay lập tức.
Matthias Zeis

8
Câu hỏi tự trả lời không chỉ được cho phép, mà còn được khuyến khích bởi SE. blog.stackoverflow.com/2012/05/encyclopedia-stack-exchange . Nhiều người dùng nên làm điều đó để giúp bản beta này phát triển, không khiến các thành viên khác phải nỗ lực giúp đỡ người khác và phát triển trang web?
Ben Lessani - Sonassi

Điều này không nên 755644quyền? Hoặc bạn có bất kỳ lý do đặc biệt để giới thiệu 775664?
Jürgen Thelen

@Jurgen - Đối với tất cả các máy chủ của chúng tôi - Nginx / Apache / PHP luôn chạy cùng một người dùng với SSH / FTP - có thể là trên lưu trữ được chia sẻ / dành riêng. Vì vậy, quyền chỉ có thể rwxdành cho chủ sở hữu - vì nhóm và mọi người khác không liên quan. Nhưng như tôi đã đề cập - không phải ai cũng định cấu hình máy chủ của họ đúng cách (thực tế, rất, rất ít làm) - và có khả năng người dùng Apache / Nginx / PHP khác với người dùng SSH / FTP - vì vậy, việc thêm lẫn nhau vào mỗi nhóm tương ứng sau đó cho phép mỗi rwxtệp có thể.
Ben Lessani - Sonassi

Nếu bạn không muốn tìm khác biệt hai thư mục bằng cách sử dụng thiết bị đầu cuối, bạn có thể cài đặt một trong các tùy chọn GUI sau: askubfox.com/questions/12473/ mẹo
pablofiumara

18

Theo yêu cầu trên Twitterthảo luận về Meta, tôi sẽ bắt đầu ở đây một hướng dẫn gỡ lỗi cho những người không phải là nhà phát triển.

Đầu tiên tôi nghĩ (ngay cả bạn cũng cố gắng tham gia vào việc này) Magento quá phức tạp đối với một thương gia không có đội ngũ phát triển / phát triển. Nhưng nếu bạn dũng cảm và muốn thử nó, chúng tôi sẽ cố gắng hết sức ở đây để giúp bạn. Tôi nghĩ đối với một số câu hỏi là ranh giới giữa "làm thế nào tôi có thể làm điều này?" và "làm cho công việc của tôi, tôi quá ngu ngốc để google cái này" là một dòng khá tốt. Tôi hiểu rằng điều đó thường rất khó, để google nghĩ bởi vì bạn không biết bạn đang làm gì vì bạn chưa biết cách đặt tên. Điều này nói rằng, hãy thu thập mọi thứ mà mọi người có cửa hàng magento có thể làm, ngay cả họ không phải là nhà phát triển.

Một câu trả lời rất hay về cách gỡ lỗi magento, khi bạn muốn làm bẩn đã được Sonassi đưa ra , nhưng tôi cố gắng thêm mọi thứ và sao chép những gì tôi nghĩ là có thể áp dụng cho thương nhân.

Tuyên bố miễn trừ trách nhiệm: Tất cả các thư mục và tệp được đề cập trong bài đăng này đều liên quan đến thư mục gốc magento, có thể nằm trong /var/wwwnhưng tùy thuộc vào nhà cung cấp dịch vụ lưu trữ, cái gọi là Document Root của bạn có thể ở khắp mọi nơi, hãy hỏi nhà cung cấp của bạn, nếu bạn không tìm thấy magento của mình !

Chế độ phát triển

Bạn muốn có lỗi thực sự, không phải là trang "lỗi xảy ra" xảo quyệt mà magento cung cấp bình thường. http://www.fontis.com.au/blog/magento/custom-magento-error-page

Cảm ơn fontis.com cho hình ảnh này.

Các báo cáo, được đề cập trên trang có thể được tìm thấy trong var/reports/<the_number>

Khi bạn kích hoạt chế độ phát triển, magento sẽ phát sinh lỗi thực sự, những lỗi này đặc biệt có thể rò rỉ thông tin đăng nhập, giống như các lỗi cho cơ sở dữ liệu! Vì vậy, hãy suy nghĩ trước khi bạn bật nó trên các máy chủ sản xuất!

Mở index.phptệp của bạn trong thư mục gốc của magento, tùy thuộc vào phiên bản, bạn tìm thấy những dòng này xung quanh dòng 73:

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE'])) {
    Mage::setIsDeveloperMode(true);
}

#ini_set('display_errors', 1);

Để kích hoạt chế độ bây giờ, bạn phải thay đổi các dòng này.

Nếu bạn biết địa chỉ IP của mình (hầu hết mọi người đều nhận được địa chỉ mới cứ sau 24 giờ, ít nhất là ở Đức), google sẽ giúp bạn tại đây:

Địa chỉ IP công cộng của bạn là 87.138.100,68

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) 
    || $_SERVER['REMOTE_ADDR'] == 'my.ip.add.ress'
) {
    Mage::setIsDeveloperMode(true);
    ini_set('display_errors', 1);
}

Nếu bạn không biết ip của mình vì bất kỳ lý do gì, bạn có thể hiển thị lỗi cho mọi người.

#if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || true) {
  Mage::setIsDeveloperMode(true);
#}
ini_set('display_errors', 1);

Ghi nhật ký

Magento ghi rất nhiều thứ vào hai tệp:

  • var/log/exception.log
  • var/log/system.log

Ngoại lệ được ghi lại luôn. Nhật ký hệ thống cần được bật trong phần phụ trợ:

System > Configuration > Developer > Log

nhập mô tả hình ảnh ở đây

Đặt Enabledthành Có và bạn thấy nhiều lỗi hơn và thông báo gỡ lỗi trong system.logvà trongexception.log

Có phải là một vấn đề chủ đề?

Bạn có chủ đề của riêng mình, cái này được cấu hình trong phần phụ trợ ở đây:

Hệ thống> Cấu hình> Thiết kế

nhập mô tả hình ảnh ở đây

Cảm ơn kb.magenting.com cho hình ảnh

Tại đây bạn có thể cấu hình gói và chủ đề. Nếu bạn muốn thử tái tạo lỗi trong chủ đề mặc định, hãy xóa mọi thứ khỏi các trường nhập. Sau đó nhấp vào lưu và bạn thấy chủ đề magento tiêu chuẩn như trong cửa hàng demo , nếu bạn có cửa hàng trước 1.8, bạn có thể tìm thấy ảnh chụp màn hình trong Hướng dẫn sử dụng Magento Community Edition

Nếu bạn không thể tái tạo vấn đề trong chủ đề mặc định, chủ đề của bạn bị hỏng, vui lòng liên hệ với nhà cung cấp chủ đề. Chúng tôi không hỗ trợ cho các chủ đề của bên thứ ba, đặc biệt là các chủ đề thương mại.

Gì bây giờ?

Bạn đã tìm thấy một lỗi thực sự, người ta có thể sao chép, nó có thể tái tạo trong chủ đề mặc định? Tuyệt vời, xin vui lòng mở một câu hỏi, và chúng tôi đang cố gắng hết sức để giúp đỡ.

Trong câu hỏi:

  • mô tả những gì bạn đang làm
  • lỗi gì được nêu ra
  • có bất cứ điều gì trong các tập tin nhật ký?
  • có thể ảnh chụp màn hình lỗi

5
  1. Trước hết bạn nên kích hoạt chế độ Nhà phát triển
  2. Bạn cũng có thể kích hoạt để hiển thị lỗi trong index.php: ini_set ('display_errors', 1);
  3. Biên dịch tiện ích mở rộng xDebug với bất kỳ IDE thông minh (PhpStrom / eclipse)
  4. Vô hiệu hóa mô-đun bên thứ ba và tùy chỉnh
  5. Xem lại nhật ký ngoại lệ và lỗi của bạn, giải quyết các lỗi được liệt kê trên nhật ký ngoại lệ
  6. Kiểm tra phần mở rộng curl và mcrypt phải được tải trên máy chủ của bạn
  7. Kiểm tra quyền truy cập thư mục và tệp -R sonassi: apache / home / path / public_html / find / home / path / public_html / -type d -exec chmod 775 {} \; tìm / nhà / đường dẫn / công khai_html / -type f -exec chmod 664 {} \;
  8. Cập nhật quyền phương tiện và thư mục var 0777 nếu không được đặt
  9. Khởi động IDE (phpstrom), sau đó đặt điểm bắt đầu của trình gỡ lỗi trên index.php 10.Press F8 và đi tiếp cho đến khi bạn gặp lỗi

Đối với việc sử dụng các bước trên, bạn sẽ nhận được lỗi chắc chắn.


1
Tôi đánh giá cao câu trả lời của bạn nhưng thay vì trả lời câu hỏi đã chấp nhận câu trả lời tại sao bạn không thể trả lời câu hỏi
dh47

3
@ dh47 Đối với tôi, những gì Abhishek đã làm là đúng. Tôi chỉ muốn đề cập rằng, trả lời các câu hỏi đã được chấp nhận vẫn còn có liên quan và quan trọng. Trên thực tế trang web của chúng tôi (Magento SE) thiếu khía cạnh quan trọng này. Điều quan trọng là có 2,5 câu trả lời được đưa ra từ phiên bản beta. Hiện tại chúng tôi chỉ có tỷ lệ trả lời 1,6. Vì vậy, nhiều câu trả lời trên cùng một câu hỏi nên được đánh giá cao. Đừng để lại một câu hỏi mà không trả lời do câu hỏi đó có một câu trả lời được chấp nhận. Nếu bạn có thêm một điểm để thêm, bạn nên trả lời.
Rajeev K Tomy

-1

Gỡ lỗi nền

Đây là chức năng tốt để gỡ lỗi cuộc gọi chức năng trong magento.

Thêm chức năng này trong tệp / config.php hoặc tạo tệp mới và đặt tất cả các hàm php được sử dụng phổ biến của bạn.

hàm back_trace ($ exit = true) {
  $ call_back_methods = '';
  $ call_back_methods. = '';
  $ call_back_methods. = 'SNFactor NameLine NumberFile Name';

  $ truy cập = 1;
  foreach (debug_backtrace () dưới dạng $ index => $ data) {
    // if (0 == $ index) tiếp tục;

    $ call_back_methods. = ''. $ truy cập ++. '';
    $ call_back_methods. = ''. $ dữ liệu ['hàm']. '';
    $ call_back_methods. = ''. $ dữ liệu ['dòng']. '';
    $ call_back_methods. = ''. $ dữ liệu ['tập tin']. '';
  }

  $ call_back_methods. = '';

  in $ call_back_methods;

  if (true == $ exit) thoát;
}

OutPut sẽ là

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.