2013-11-04 16 views
5

Khi tôi cố gắng mở index.php trong trình duyệt Tôi thấy lỗi:PHP-FPM: Hoạt động không được phép

No input file specified. 

Trong error.log:

2013/11/04 22:40: 07 [lỗi] 3435 # 0: * 4 FastCGI được gửi trong stderr: "Không thể mở tập lệnh chính: /var/www/index.php (Thao tác không được phép)" trong khi đọc tiêu đề phản hồi từ phía trên, máy khách: 10.0.2.2, máy chủ : localhost, yêu cầu: "GET/HTTP/1.1", ngược dòng: "fastcgi: //127.0.0.1: 9000", máy chủ: "localhost"

Cấu hình máy chủ:

  • CentOS 6.4
  • PHP 5.4.17 (cài đặt từ nguồn)
  • Nginx 1.0.15

PHP-FPM làm việc từ người sử dụng nginx.

$ ps aux | grep fpm 
root  3460 0.0 0.7 29524 3428 ?  Ss 22:48 0:00 php-fpm: master process (/usr/etc/php-fpm.conf) 
nginx  3462 0.0 0.5 29524 2732 ?  S 22:48 0:00 php-fpm: pool www    
nginx  3463 0.0 0.5 29524 2732 ?  S 22:48 0:00 php-fpm: pool www    
nginx  3464 0.0 0.7 29524 3592 ?  S 22:48 0:00 php-fpm: pool www    
nginx  3465 0.0 0.5 29524 2732 ?  S 22:48 0:00 php-fpm: pool www    
nginx  3466 0.0 0.5 29524 2732 ?  S 22:48 0:00 php-fpm: pool www    
vagrant 3468 0.0 0.1 5532 720 pts/0 D+ 22:48 0:00 grep fpm 

$ ls -la /var/www 
drwxr-xr-x 2 nginx nginx 4096 Ноя 4 22:34 . 
drwxr-xr-x. 19 root root 4096 Ноя 4 22:31 .. 
-rw-r--r-- 1 nginx nginx 17 Ноя 4 22:34 index.php 

Bật catch_workers_output không giúp

+0

Bạn không có 'x' đặc quyền cho index.php, 'x' có nghĩa là thực thi. Nó phải là 'rwxr-xr-x' – TroyCheng

+0

Tôi không bao giờ thêm đặc quyền 'x' cho các tệp php, hoạt động qua máy chủ web và không có vấn đề gì. Nhưng tôi đã cố gắng thêm đặc quyền 'x' cho index.php ngay bây giờ - điều đó không giúp ích cho tôi – vanchester

+0

Ok, 'Hoạt động không được phép' hoàn toàn là một vấn đề về quyền hạn. Trong môi trường sản phẩm, tốt hơn nên sử dụng tài khoản công việc tùy chỉnh để triển khai cả nginx và php. Ở đây tôi nhận thấy bạn sử dụng 'root' để bắt đầu php-fpm và quá trình công nhân thực sự làm việc với tài khoản 'nginx'. Và '/ var' không thể truy cập bằng tài khoản 'nginx'. – TroyCheng

Trả lời

6

Vấn đề là trong đường dẫn không tồn tại của thiết session.save_path và không có trong danh sách các thiết open_basedir trong php.ini

+0

Rất cám ơn! đang tìm kiếm điều này trong một giờ –

+0

Rất có thể, vấn đề với 'session.save_path' là ngẫu nhiên, và vấn đề duy nhất là với giá trị' open_basedir'. Bất cứ khi nào lỗi này xuất hiện trong nhật ký nginx, chỉ cần kiểm tra nhật ký PHP và nguyên nhân chính xác của lỗi (thường thiếu quyền hạn do 'hạn chế open_basedir') sẽ rõ ràng. –

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