我试图在Ubuntu 18.2上设置Laravel 5.6 + PHP 7.2(使用Instantclient 12.2和oracle OCI)+ Nginx。另外,我为Laravel安装了“ yajra / laravel-oci8”:“ ^ 5.6”。为了确保我正确安装了InstantClient,我还尝试了sqlplus以确保可以与oracle服务器建立连接。
因此,我应该正确配置所有内容,并且当我使用“ php artisan serve --host = 192.168.56.12 --port = 8000 ”命令为页面提供服务时,oracle连接器可以正常工作。
测试代码如下:
public function testorcl(){
if (function_exists('oci_connect') == false){
return "oci driver not available";
}
}
同时,我在默认端口80 上启用了Nginx。 两个Web服务器都使用相同的Laravel代码库。
奇怪的是, Nginx 找不到oci_connect()!
然后,我检查两台服务器上的phpinfo()页面。
我发现oci8模块未未安装在Nginx服务器上。但是,“ php artisan服务”显示oci8已安装。安装的oci8模块应显示类似下图的内容。
不仅oci8模块部分不同,环境变量列表也不同。 Nginx仅提供如下所示的4个环境变量,而php artisan提供了很长的变量列表(太长了,无法在此处显示在单个页面中)。
所以,我认为是Nginx引起了问题。这是我的Nginx配置。
server {
listen 80;
listen [::]:80 ipv6only=on;
# Log files for Debugging
access_log /var/log/nginx/laravel-access.log;
error_log /var/log/nginx/laravel-error.log;
# Webroot Directory for Laravel project
root /home/ub18/test/public;
index index.php index.html index.htm;
# Your Domain Name
#server_name example.com;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# PHP-FPM Configuration Nginx
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
include fastcgi_params;
}
# deny access to . files, for security
#
location ~ /\. {
log_not_found off;
deny all;
}
}
问题是: 1.如何使我的OCI工作?我错过了什么? 2.如何确保Nginx可以像“ php artisan服务”一样加载正确的环境变量?
欢迎提出任何建议,谢谢。