Laravel 5.6 OCI可与“;php artisan serve“;但Nginx找不到oci_connect()

Laravel 5.6 OCI可与“;php artisan serve“;但Nginx找不到oci_connect(),nginx,laravel-5,php-7,oracle-call-interface,instantclient,Nginx,Laravel 5,Php 7,Oracle Call Interface,Instantclient,我正在尝试在Ubuntu18.2上设置Laravel5.6+PHP7.2(使用Instantclient 12.2和OracleOCI)+Nginx。此外,我还为laravel安装了“yajra/laravel-oci8”:“^5.6”。为了确保instantclient安装正确,我还尝试了sqlplus,以确保可以与oracle服务器建立连接 因此,当我使用“php-artisan-serve--host=192.168.56.12--port=8000”命令为页面提供服务时,我应该正确配置所

我正在尝试在Ubuntu18.2上设置Laravel5.6+PHP7.2(使用Instantclient 12.2和OracleOCI)+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\u connect()

然后,我检查两台服务器上的phpinfo()页面

我发现oci8模块未安装在Nginx服务器上。但是,“php artisan serve”显示安装了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 serve


欢迎您提出任何建议,谢谢。

您有没有弄清这件事的真相?我无法让
oci\u connect()
工作。我目前唯一想做的就是卸载Nginx,然后尝试使用Apache!!我刚刚注意到,您的
LD\u LIBRARY\u路径
应该指向
$ORACLE\u HOME/bin
,而不是指向与ORACLE HOME相同的位置。这可能是(但可能不是完整的)解决您问题的方法。