Laravel 5.6 OCI可以与“ php artisan serve”一起正常工作,但Nginx找不到oci_connect()

时间:2018-08-08 13:44:00

标签: nginx laravel-5 php-7 oci instantclient

我试图在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()页面。

enter image description here

我发现oci8模块未未安装在Nginx服务器上。但是,“ php artisan服务”显示oci8已安装。安装的oci8模块应显示类似下图的内容。 enter image description here

不仅oci8模块部分不同,环境变量列表也不同。 Nginx仅提供如下所示的4个环境变量,而php artisan提供了很长的变量列表(太长了,无法在此处显示在单个页面中)。 enter image description here

所以,我认为是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服务”一样​​加载正确的环境变量?

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

0 个答案:

没有答案