警告:我对PHP一无所知(我使用Python3和C#),而且我只使用过Apache。
我无法弄清楚为什么这个PHP代码拒绝写入血腥文件以及为什么重新加载nginx / php7.0-fpm不会反映对文件所做的更改。
我一直都是天才"一个内部程序,用PHP7编写,运行在Nginx,Ubuntu 16.04.4(仅限终端)。该程序没有Web UI,只存在处理HTTP GET和PUT请求。所述程序没有按预期运行,我试图调试原因。但是,似乎我对PHP代码所做的任何更改都不会反映在行为中。
基本上我想设置某种日志记录 - 写入nginx日志,写入文件,发送电子邮件,任何东西 - 以便我可以找出失败的地方。然后,我可以向知道的人报告事情,而不是仅仅说“#34;程序没有工作。你解决了。"
/var/www/servername
中的git checkout运行。upstream php { server unix:/run/php/php70-fpm.sock; }
server {
server_name 192.168.11.80;
root /var/www/servername/public/;
rewrite ^/$ /index.php;
rewrite ^/\$metadata$ /metadata.xml;
rewrite ^/Search\(\)/\$count$ /count.php;
rewrite ^/Search\(\)$ /search.php;
rewrite ^/Packages\(\)$ /search.php;
rewrite ^/Packages\(Id='([^']+)',Version='([^']+)'\)$ /findByID.php?id=$1&version=$2;
rewrite ^/GetUpdates\(\)$ /updates.php;
rewrite ^/FindPackagesById\(\)$ /findByID.php;
rewrite ^//?download/([^/]+)/([^/]+)$ /download.php?id=$1&version=$2;
rewrite ^/([^/]+)/([^/]+)$ /delete.php?id=$1&version=$2;
rewrite ^/api/v2/package/$ /index.php;
rewrite ^/api/v2/package/([^/]+)/([^/]+)$ /delete.php?id=$1&version=$2;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php;
}
location = /index.php {
dav_methods PUT DELETE;
include fastcgi_params;
fastcgi_pass php;
# PHP doesn't parse request body for PUT requests, so fake a POST.
fastcgi_param REQUEST_METHOD POST;
fastcgi_param HTTP_X_METHOD_OVERRIDE $request_method;
}
# Used with X-Accel-Redirect
location /packagefiles {
internal;
root /var/www/servername/;
}
}
我已尝试过以下所有项目,但似乎没有任何效果。
file_put_contents
。出于某种原因,这不起作用。
file_put_contents('php://stderr', 'TESTING');
不会向nginx日志文件/var/log/nginx/[access|error].log
file_put_contents('/var/log/sns/debug.log, 'TESTING');
也不会写入debug.log
文件
/var/log/sns
文件夹具有777权限。die()
中止。sudo service php7.0-fpm restart & sudo service nginx restart
基于this answer。/var/log/php7.0-fpm.log
只有启动/关闭通知(" fpm正在运行","读取处理连接","终止"等。 )/var/log/nginx/access.log
正确显示了所有GET和PUT请求,但没有其他内容/var/log/nginx/error.log
仅显示"使用共享内存的xKiB" (启动信息)。index.php
,然后重新启动nginx& php7.0-fpm - 程序仍然有效!error_log('msg', 3 '/var/log/sns/debug.log')
,file_put_contents(...)
和die()
,然后完全重新启动服务器。仍然没有写入文件。那么我错过了什么极其基本的东西?
答案 0 :(得分:0)
以调试模式启动nginx。
servie nginx调试启动。