通过php直接访问MySql,我可以毫无问题地连接到数据库。
然而,当我尝试间接访问MySql时 - 借助连接到MySql db的jar文件,我无法从php连接。
我已经从终端测试了这个jar文件,它工作正常并连接到db。
简而言之,要连接到同一个db:
(1)php-mysql连接工作完美 (2)jar - mysql连接工作完美 (3)php - jar - mysql连接失败
从php代码中调用shell_exec("java -jar /var/www/html/nyk/app/webroot/Converter.jar $id");
,正确调用jar文件并进入其中。但是,当jar文件中的java代码尝试连接到MySql时,当它到达以下行conn = DriverManager.getConnection(url + dbName, userName, password);
时,它会给出以下异常:
Inside JAR file
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Permission denied
STACKTRACE:
java.net.SocketException: Permission denied
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:241)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at com.nykkos.personalization.MysqlConnect.<init>(MysqlConnect.java:29)
at com.nykkos.personalization.MyConnect.dbGenMusic(MyConnect.java:154)
at com.nykkos.personalization.MyConnect.main(MyConnect.java:22)
** END NESTED EXCEPTION **
上述异常发生仅当从php执行jar文件时。然而,当从终端调用jar文件时,它连接到MySql而没有任何问题,如上所述。
我很困惑为什么会发生这种奇怪的行为 - 即;当从终端调用jar时连接到db,并在同一个jar尝试从php连接时给出异常。
我的操作系统是fedora,php运行的服务器是Apache。
它是否与任何配置设置有关,或者我在上面做了什么错误导致这个?
过去两天,我一直在用谷歌搜索这个问题无济于事。
我真的很感激,如果有人能让我脱离这个阻挡者。
提前致谢。