2010-08-10 25 views
10

Tôi đã có một vấn đề lạ. Tôi đã thiết lập XDebug để cấu hình một ứng dụng PHP mà chúng tôi đang làm việc. Tôi tin rằng tất cả mọi thứ được thiết lập một cách chính xác nhưng tôi nhận được không có đầu ra khi tôi chạy nó. Cấu hình của tôi trông giống như sau:XDebug hồ sơ trong PHP - không thể có được đầu ra

zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so 
[XDebug] 
xdebug.profiler_append = 1 
xdebug.profiler_enable = 0 (I've tried this both on and off) 
xdebug.profiler_enable_trigger = 1 
xdebug.profiler_output_dir = "/debug/xdebug/profiler_output_dir" 
xdebug.profiler_output_name = "cachegrind.out.%p" 

Tất cả cài đặt phpinfo() đều khớp với nhau. Các điều khoản trên thư mục đầu ra được thiết lập để 777 ngay bây giờ chỉ để tôi có thể kiểm tra nó. Tôi đã thử sử dụng một thư mục dưới public_html nhưng không may mắn. URL tôi đang sử dụng để khởi chạy hồ sơ là:

http://example.com/my_page.php?XDEBUG_PROFILE 
-or- 
http://example.com/my_page.php?XDEBUG_PROFILE=1 

Không hoạt động. Mọi sự trợ giúp sẽ rất được trân trọng!! Ứng dụng này có thời gian tải trang 5-6 giây và tôi không thể theo dõi nó thông qua mã.

Trả lời

10

Nhận xét ra xdebug.profiler_output_dirxdebug.profiler_output_name và xem liệu bạn có thể tìm thấy kết quả dưới /tmp/ hay không.

+0

Cố gắng, đó nhưng nhờ cho đầu vào. –

+2

Hamid, Hóa ra bạn đã đi đúng hướng. Tôi đã quên đặt đường dẫn đầy đủ vào thư mục đầu ra. Đây là giải pháp cuối cùng: xdebug.profiler_append = 1 xdebug.profiler_output_dir = "/ home/tên người dùng/debug/xdebug/profiler_output_dir" xdebug.profiler_output_name = "cachegrind.out.% S.% H" –

+0

@John vui vì nó đã làm việc. :) –

5

Một nguyên nhân khác có thể có của vấn đề này là quyền trên thư mục của profiler_output_dir.

Thêm quyền ghi vào nhóm và chủ sở hữu giải quyết vấn đề đối với tôi:

sudo chmod go+w /home/dimitris/cachegrind/ 
+1

Đã khắc phục sự cố của tôi! – JohnWright

1

Ngoài ra, hãy cẩn thận của các hạn chế truy cập, chẳng hạn như quyền truy cập, các nhóm, chủ sở hữu và SELinux ...

+0

Thật vậy. Đã có cùng một vấn đề với apache không thể ghi vào thư mục người dùng được xác định vì các điều khoản –

10

Có cũng là vấn đề với các thư mục/tmp trên một số phân phối, i couldnt nhận được đầu ra trên centos 7 và sau đó tôi tìm thấy this

Vì vậy, tôi đã thiết

xdebug.profiler_output_dir =/home/Jirka/profile

thiết lập 777 và ok của nó bây giờ.

+1

Có thêm thông tin về cài đặt 'PrivateTmp' [ở đây] (https://securityblog.redhat.com/2014/04/09/new-red -hat-enterprise-linux-7-security-feature-privatetmp /). Nó "thiết lập một không gian tên hệ thống tệp mới cho các tiến trình đã thực hiện và gắn kết một thư mục'/tmp' riêng bên trong nó, không được chia sẻ bởi các tiến trình bên ngoài vùng tên. Điều này có nghĩa là các tiến trình đang chạy với cờ này sẽ thấy khác biệt và độc đáo '/ tmp' từ một người dùng và các trình nền khác thấy hoặc có thể truy cập." – TachyonVortex

+0

Cảm ơn vì điều này. Hóa ra OpenSUSE 13.1 của tôi có cùng cấu hình và di chuyển đầu ra của trình tạo hồ sơ ở nơi khác đã giải quyết được vấn đề. – savedario

1

Các đường dẫn đầy đủ được yêu cầu, không chỉ là đường dẫn:

xdebug.profiler_append=1 
xdebug.profiler_output_dir ="/home/username/debug/xdebug/profiler_output_dir" 
xdebug.profiler_output_name = "cachegrind.out.%s.%H" 
+0

Lưu ý: Đây là giải pháp do OP cung cấp trong câu hỏi của họ. – k0pernikus

Các vấn đề liên quan